我希望我的日志文件中的所有时间戳都是UTC时间戳。通过代码指定时,执行如下:
import logging
import time
myHandler = logging.FileHandler('mylogfile.log', 'a')
formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(name)-15s:%(lineno)4s: %(message)-80s')
formatter.converter = time.gmtime
myHandler.setFormatter(formatter)
myLogger = logging.getLogger('MyApp')
myLogger.addHandler(myHandler)
myLogger.setLevel(logging.DEBUG)
myLogger.info('here we are')
我想从上面的'in-code'配置转移到基于配置文件的机制。
这是格式化程序的配置文件部分:
[handler_MyLogHandler]
args=("mylogfile.log", "a",)
class=FileHandler
level=DEBUG
formatter=simpleFormatter
现在,如何在上一节中指定转换器属性(time.gmtime)?
编辑:上面的配置文件被加载:
logging.config.fileConfig('myLogConfig.conf')
答案 0 :(得分:4)
可悲的是,使用配置文件无法做到这一点,除了例如一个
class UTCFormatter(logging.Formatter):
converter = time.gmtime
然后在配置中使用UTCFormatter
。
答案 1 :(得分:1)
这里Vinay的解决方案应用于logging.basicConfig:
import logging
import time
logging.basicConfig(filename='junk.log', level=logging.DEBUG, format='%(asctime)s: %(levelname)s:%(message)s')
logging.Formatter.converter = time.gmtime
logging.info('A message.')