tornado的默认options里有个神坑,配置了默认的logging。如果你自己再配一遍,很可能要记录重复日志了。 首先顺序,一定不能错。坑死了。 先设置logging,后parse_command_line()
import logging
from tornado.options import define, options
set_logging.log_setting()
define("port", default=8600, help="run on the given port", type=int)
define("isdebug", default=True, help="if it is in debug mode", type=bool)
options.logging = None
options.parse_command_line()
logging 配置函数
import logging
import logging.handlers
def log_setting(log_file='', log_level=logging.DEBUG, backup_cnt=5,is_init=False):
logger = logging.getLogger()
handler = logging.StreamHandler()
formatter = logging.Formatter("%(asctime)s %(levelname)s %(filename)s:%(lineno)s %(message)s", "%Y-%m-%d %H:%M:%S")
handler.setFormatter(formatter)
logger.addHandler(handler)
if log_file:
handler = logging.handlers.TimedRotatingFileHandler(
filename=log_file,
when="midnight",
backupCount=backup_cnt)
handler.setFormatter(formatter)
if is_init:
logger.handlers = []
logger.addHandler(handler)
logger.setLevel(log_level)
return logger
如果在一个文件中想简单点使用logging。只需要:
import logging
import logging.handlers
fmt = '%(asctime)s %(levelname)s %(filename)s:%(lineno)s %(message)s'
datefmt='%Y-%m-%d %H:%M:%S'
logger = logging.getLogger()
file_handler = logging.handlers.TimedRotatingFileHandler(
filename = '../logs/flush_v3.log',
when = "midnight",
backupCount = 5)
file_handler.setFormatter(logging.Formatter(fmt, datefmt))
logger.addHandler(file_handler)
logger.setLevel('DEBUG')