python - Python 中的基本日志记录 dictConfig

标签 python logging

注意 我知道 this answer但这对我不起作用,我希望有一个完整的、独立的工作示例。

我正在尝试用 Python (2.7) 中的 dictConfig 替换 logging.basicConfig

我的理解是 basicConfig 只是设置根记录器:所以我试图对 dictConfig 做同样的事情。也就是说,使用处理程序设置根记录器,然后我的应用程序中的所有记录器都将向上传播根记录器。

以下片段中缺少什么?行为是创建了日志文件,但没有输出。 (我尝试了各种设置级别的组合,但似乎没有帮助)

import logging
log_dict = {
    'loggers': {
        'root': {
            'handlers': ['file_handler']
        }
    },
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file_handler': {
            'filename': 'c:/mylogfile.log',
            'class': 'logging.FileHandler'
        }
    }
}

logging.config.dictConfig(log_dict)
logging.info('THIS IS A TEST')
logging.shutdown()
exit()

最佳答案

以下代码非常适合我:

import logging
import logging.config

log_dict = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
        },
    },
    'handlers': {
        'default': {
            'level': 'INFO',
            'formatter': 'standard',
            'class': 'logging.StreamHandler',
        },
        'file_handler': {
            'level': 'INFO',
            'filename': '/tmp/mylogfile.log',
            'class': 'logging.FileHandler',
            'formatter': 'standard'
        }
    },
    'loggers': {
        '': {
            'handlers': ['file_handler'],
            'level': 'INFO',
            'propagate': True
        },
    }
}
logging.config.dictConfig(log_dict)
logging.info("test")

确实,它是基于上面提到的答案

关于python - Python 中的基本日志记录 dictConfig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36785002/

相关文章:

python - 如何在 python 中找到函数对象的必需参数?

postgresql - 在 postgres 9.1 中记录触发器的触发

python - 计算特征和目标变量之间的相关性

python - DataFrame:N 个最大索引值(从 level=1)到 n 列

python - 如何使用守护进程 uwsgi 从 stderr 收集错误消息?

android - 如何连续读取logcat并写入内部存储文件?

.net - Common.Logging 没有 app.config

C++ - 无法使用 msys2 和 cmake 链接到 Boost::logger

python - 使用并发选项开始之前的任务状态

python - spark 从 oracle 导入数据 - java.lang.ClassNotFoundException : oracle. jdbc.driver.OracleDriver