我喜欢TimedRotatingFileHandler,我想使用它。
然而,我当前的日志记录是我喜欢的,包括一些格式化,以及登录控制台,如下所示:
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)-8s %(message)s',
datefmt=dtfmt,
filename=logfile,
filemode='w')
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
logger = logging.getLogger('logger')
logger.info('log something')
这会在日志文件中返回类似的内容:
2015-08-14 22:55:35 INFO记录一些东西
这在控制台中:
08-14 22:56 INFO记录一些东西
我如何实现这一点,但另外每天午夜都会轮换日志文件?
答案 0 :(得分:1)
一个老问题,但是因为当我想要做同样的事情时我会在Google上搜索结果,我会添加我的结果。
实质上你不应该使用basicConfig。手动添加两个处理程序。
import logging, logging.handlers
#get the root logger
rootlogger = logging.getLogger()
#set overall level to debug, default is warning for root logger
rootlogger.setLevel(logging.DEBUG)
#setup logging to file, rotating at midnight
filelog = logging.handlers.TimedRotatingFileHandler('./mylogfile.log',
when='midnight', interval=1)
filelog.setLevel(logging.DEBUG)
fileformatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s')
filelog.setFormatter(fileformatter)
rootlogger.addHandler(filelog)
#setup logging to console
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M')
console.setFormatter(formatter)
rootlogger.addHandler(console)
#get a logger for my script
logger = logging.getLogger(__name__)
logger.info('This is logged to console and file')
logger.debug('This is only logged to file')