当我尝试从我的脚本登录时,它总是生成基本的日志记录输出。没有配置。
代码如下:
def set_logger():
res_logger = logging.getLogger(__name__)
file_handler = logging.FileHandler(filename='%s.log' % __file__)
res_logger.setLevel(logging.INFO)
stdout_handler = logging.StreamHandler(sys.stdout)
file_handler.setLevel(logging.INFO)
stdout_handler.setLevel(logging.WARNING)
file_formatter = logging.Formatter('[%(asctime)s]\t{%(filename)s:%(lineno)d}\t%(levelname)s\t- %(message)s')
file_handler.setFormatter(file_formatter)
stdout_formatter = logging.Formatter('[%(asctime)s]\t{%(filename)s:%(lineno)d}\t%(levelname)s\t- %(message)s')
stdout_handler.setFormatter(stdout_formatter)
res_logger.addHandler(file_handler)
res_logger.addHandler(stdout_handler)
return res_logger
logger = set_logger()
logger.error("TEST")
此设置的输出应该在我的stdout和filename.py.log文件中为[2018-04-17 15:50:31,601] {filename.py:60} ERROR - TEST
。
但是,实际输出是
ERROR:__main__:TEST
[2018-04-17 15:57:37,756] {filename.py:60} ERROR - TEST
甚至更奇怪:我无法使用" logging.error(' test')"即使我从未声明记录器,也要产生基本输出。它什么也没产生。这只发生在这个脚本上。如果我将相同的代码复制粘贴到新脚本,它一切正常。整个脚本中没有完成日志记录配置,您可以看到here
所有9次"记录"被写入的图像显示在图像中。唯一的时间"记录器"使用,是有生产日志的时候。
我无法理解为什么它不起作用。
答案 0 :(得分:0)
Something else is almost certainly configuring logging and adding another handler which outputs to console. For example, if I copy your code to footest.py
and add an import logging, sys
at the top and run it using
python -c "import footest"
I get the output you would expect. But if I insert a line
logging.debug('foo')
and then run the python command again, I get the extra line. The logging.debug('foo')
doesn't output anything, as the default level is WARNING
, but it adds a handler which is used when the logger.error('TEST')
at the bottom is executed.