2015-08-14 80 views
0

我喜歡TimedRotatingFileHandler,我想使用它。帶格式和控制檯打印的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年8月14日22點55分35秒信息登錄的東西

這在控制檯:

08-14 22:56信息登錄的東西

如何做到這一點,但是除了有日誌文件旋轉每個午夜?

回答

0

一個古老的問題,但因爲它是谷歌搜索結果,當我想做同樣的事情時,我會添加我的結果。

實質上,你不應該使用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') 
+0

感謝您的麻煩,在答覆。雖然我沒有時間來驗證您的解決方案。乾杯! – Jos