使用dictConfig进行Python日志记录的问题

Aru*_*run 6 python django logging

以下是我使用的配置字典:

LOGGING_CONF = {
'version': 1,
'disable_existing_loggers': False,
'formatters': { 
    'verbose': {
        'format': '%(levelname)s %(asctime)s %(module)s %(message)s'
    },
    'simple': {
        'format': '%(levelname)s %(message)s'
    },
},
'handler': { 
    'file': {
        'level': 'DEBUG',
        'class': 'logging.handlers.RotatingFileHandler',
        'formatter': 'verbose',
        'filename': 'D:\workspace\yogasync\codes\code_svn\YogaSync\log\workspacelogconfig.log',
        'maxBytes': 20480,
        'backupCount': 3, 
     },
},
'logger': {
    'extensive': {
        'level':'DEBUG',
        'handlers': 'file'
    },
},
Run Code Online (Sandbox Code Playgroud)

}

在我需要创建日志的模块中,我插入了以下代码:

import logging
import logging.config 
logging.config.dictConfig(LOGGING_CONF)

logger = logging.getLogger('extensive')

logger.info("This is my first log")
Run Code Online (Sandbox Code Playgroud)

执行此操作时,不会引发任何错误,但不会创建任何日志.我不确定错过了什么.我想只使用dictCongif请帮帮我.

Cla*_*diu 2

您必须添加一个处理程序,以便所有这些记录器都会发生一些事情。例如,

logfile = logging.handlers.FileHandler("mylog.log")
logfile.setLevel(logging.DEBUG)
logfile.setFormatter(logging.Formatter('%(asctime)s %(levelname)-8s %(module)s: %(message)s'))
logging.getLogger('').addHandler(logfile)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,它应该是处理程序而不是处理程序,记录器不是记录器。(愚蠢的错误)是的,处理程序应该是一个列表。谢谢,你帮我买了啤酒瓶。;) (3认同)
  • @Arun:哦,在这种情况下,也许“loggers”键应该是一个列表?它是“处理程序”而不是“处理程序”。所以有 `'external': { 'level': 'DEBUG', 'handlers': ['file']}` (2认同)