[英]What is Wrong with my Django logging configuration? No logs are seen in the log file
[英]print the log and store the log at the sametime, what's wrong with my code?
#!/usr/bin/python
import os
import logging
import pickle
def _config_logger(test_name):
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logging.basicConfig(format='%(message)s',filename="./%s.txt" %(test_name))
stderrLogger=logging.StreamHandler()
stderrLogger.setFormatter(logging.Formatter('%(message)s'))
logging.getLogger("").addHandler(stderrLogger)
return logger
for i in ['x','y','z']:
logger=_config_logger(i)
logger.debug(i)
不需要输出,y打印两次,z打印3次。
$ python test.py
X
ÿ
ÿ
ž
ž
ž
但是我只有一个文件x.txt,我希望是y.txt。 z.txt在那
$ ls test.py x.txt
我应该怎么做?
检查文档logging.basicConfig :
如果根记录器已经为其配置了处理程序,则此功能不执行任何操作。
调用一次以登录x.txt
,后续调用无效。
而不是调用logging.basicConfig
,而是添加类似于添加流处理程序的文件处理程序:
file_handler = logging.FileHandler("./%s.txt" %test_name)
file_handler.setFormatter(logging.Formatter('%(message)s'))
logger.addHandler(file_handler)
这里:
def _config_logger(test_name):
logger = logging.getLogger()
您不会将test_name
传递给geLogger()
,因此您始终会获得root记录器。 然后几行:
logging.getLogger("").addHandler(stderrLogger)
您继续向根记录器添加处理程序,因此出现“ y打印两次,z打印3次”的症状。
同样, .basicConfig()
调用.basicConfig()
是没有用的,只有第一个调用才有意义,请参见详细手册 :
通过创建带有默认Formatter的StreamHandler并将其添加到根记录器,对记录系统进行基本配置。 如果没有为根记录器定义处理程序,则debug(),info(),warning(),error()和critical()函数将自动调用basicConfig()。
如果根记录器已经为其配置了处理程序,则此功能不执行任何操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.