Logger.info从不输出

时间:2016-05-23 12:34:43

标签: python logging

为什么python logger.info("print something")不输出。我之前遇到过问题,但解决方案并不存在。我不想使用logger.debuglogger.warning来查看文字。

简单的logger.info应该打印文本,否则使用这个?

logging.conf文件如下

[loggers]
keys=root

[handlers]
keys=stream

[formatters]
keys=formatter

[logger_root]
level=INFO
handlers=stream

[handler_stream]
class=StreamHandler
level=INFO
formatter=formatter
args=(sys.stderr,)

[formatter_formatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

访问记录器的演示代码:

import logging
logger = logging.getLogger()

if __name__ == '__main__':
    logger.info("logger")
    print("print")

输出仅为print,而不是logger。所以logger.info不起作用。

2 个答案:

答案 0 :(得分:1)

默认情况下,根记录器(您在说出logger.info时使用的记录器)设置为WARN级。

您可以这样做:

logging.basicConfig(level=logging.INFO)

logging.getLogger().setLevel(logging.INFO)

答案 1 :(得分:0)

似乎您没有加载配置文件。你应该加上这个:

logging.config.fileConfig('path_to_logging.conf')

之前logger = logging.getLogger()

因为您现在使用默认的WARNING级别。

编辑:为了使用logging.config,你也必须导入它:

import logging.config

所以完整的代码应该是:

import logging
import logging.config

logging.config.fileConfig('path_to_logging.conf')
logger = logging.getLogger()

if __name__ == '__main__':
    logger.info("logger")
    print("print")

上面的代码,包含以下logging.conf(除了我删除sentry部分之外与您相同):

[loggers]
keys=root

[handlers]
keys=stream

[formatters]
keys=formatter

[logger_root]
level=INFO
handlers=stream

[handler_stream]
class=StreamHandler
level=INFO
formatter=formatter
args=(sys.stderr,)

[formatter_formatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

确实有效:

$ ./test_script3.py
2016-05-23 15:37:40,437 - root - INFO - logger
print