为什么python logger.info("print something")
不输出。我之前遇到过问题,但解决方案并不存在。我不想使用logger.debug
或logger.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
不起作用。
答案 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