【问题标题】:Issue in Python Logging using dictConfig使用 dictConfig 的 Python 日志记录问题
【发布时间】:2011-08-18 12:21:30
【问题描述】:

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

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'
    },
},

}

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

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

logger = logging.getLogger('extensive')

logger.info("This is my first log")

当我执行此操作时,不会引发任何错误,但不会创建任何日志。 我不确定遗漏了什么。我只想使用 dictCongif 请帮我解决这个问题。

【问题讨论】:

    标签: python django logging


    【解决方案1】:

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

    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)
    

    【讨论】:

    • 我们可以通过三种方式配置日志记录: 1. 使用调用上面列出的配置方法的 Python 代码显式创建记录器、处理程序和格式化程序。 2. 创建日志配置文件并使用 fileConfig() 函数读取它。 3. 创建配置信息字典并将其传递给 dictConfig() 函数。您提到了第一种记录方式。我想使用第三种方法(dictConfig)
    • @Arun:哦,在这种情况下,loggers 键应该是一个列表?它是handlers 而不是handler'extensive': { 'level': 'DEBUG', 'handlers': ['file']} 也是如此
    • 谢谢,应该是处理程序而不是处理程序,记录器不是记录器。(愚蠢的错误)是的,处理程序应该是一个列表。谢谢,你帮我弄了一瓶啤酒。 ;)
    • 哦,什么是麦芽酒,什么能让你喝得更快,什么是瓶装或 caaans?啤酒!
    • 在我们的工作场所,我们为那些在早期完成工作的人准备了冰镇啤酒,今天是瓶装 CARLSBERG
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2014-10-20
    相关资源
    最近更新 更多