tornado的日志模块详解tornado.log
tornado的日志本质是使用python自带的logging模块做的,这是一个单例模式的模块,所以你直接引入logging模块并且做一些设置会影响tornado的正常日志。
原理:
torndao启动前,如果你使用了tornado.options.parse_command_line() 则命令行参数会被加载到log里,
tornado日志的格式是一个继承logging.Formatter的类 tornado.log.LogFormatter ,这个类的唯一不同是,它增加了%(color)s格式,默认情况下这个类是不会被使用的,只有你执行了ornado.log.enable_pretty_logging()函数的时候,这个格式类才会被加载到logging中,这让日志输出变得很漂亮,但是如果想对格式进行修改,怎么办呢?这时候要使用原生的logging模块去操作.
实例代码:
import logging
import tornado
logger = logging.getLogger()
fm=tornado.log.LogFormatter(fmt='[%(asctime)s]%(color)s[%(levelname)s]%(end_color)s[(module)s:%(lineno)d] %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
tornado.log.enable_pretty_logging(logger=logger) //自己添加logger不用tornado自动生成的
logger.handlers[0].setFormatter(fm)//,上面注册的handler会到logger下的handlers列表,列表只有一个元素,所以直接【0】取第一个。
以上代码完成了对tornado日志格式的修改。
写日志的时候,无论在哪直接引入import logging 然后 logging.info("sth")正常使用就可以
附加:
tornado默认有三种日志定义在tornado.log里
access_log = logging.getLogger("tornado.access")
app_log = logging.getLogger("tornado.application")
gen_log = logging.getLogger("tornado.general")
可以通过调用tornado.log.access_log操作对应类型日志的logger,上面的设置只是宏观默认设置.
原理:
torndao启动前,如果你使用了tornado.options.parse_command_line() 则命令行参数会被加载到log里,
tornado日志的格式是一个继承logging.Formatter的类 tornado.log.LogFormatter ,这个类的唯一不同是,它增加了%(color)s格式,默认情况下这个类是不会被使用的,只有你执行了ornado.log.enable_pretty_logging()函数的时候,这个格式类才会被加载到logging中,这让日志输出变得很漂亮,但是如果想对格式进行修改,怎么办呢?这时候要使用原生的logging模块去操作.
实例代码:
import logging
import tornado
logger = logging.getLogger()
fm=tornado.log.LogFormatter(fmt='[%(asctime)s]%(color)s[%(levelname)s]%(end_color)s[(module)s:%(lineno)d] %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
tornado.log.enable_pretty_logging(logger=logger) //自己添加logger不用tornado自动生成的
logger.handlers[0].setFormatter(fm)//,上面注册的handler会到logger下的handlers列表,列表只有一个元素,所以直接【0】取第一个。
以上代码完成了对tornado日志格式的修改。
写日志的时候,无论在哪直接引入import logging 然后 logging.info("sth")正常使用就可以
附加:
tornado默认有三种日志定义在tornado.log里
access_log = logging.getLogger("tornado.access")
app_log = logging.getLogger("tornado.application")
gen_log = logging.getLogger("tornado.general")
可以通过调用tornado.log.access_log操作对应类型日志的logger,上面的设置只是宏观默认设置.
还没人赞这篇日记