logging模块处理 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') ``` 来自 大脸猪 写于 2017-04-27 17:07 -- 更新于2020-10-19 13:06 -- 0 条评论