[英]Python Log, Not Writing to File
所以我试图在我的Python程序中实现日志记录。 目的是进行设置,以便创建日志文件,并记录程序通过其各个模块进行的所有操作(基于日志记录级别)。 这是我当前的代码如下所示:
用于日志配置的文本文件:
#logging.conf
[loggers]
keys=root,MainLogger
[handlers]
keys=consoleHandler
[formatters]
keys=consoleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_MainLogger]
level=DEBUG
handlers=consoleHandler
qualname=MainLogger
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=consoleFormatter
args=(sys.stdout,)
[formatter_consoleFormatter]
format=%(asctime)s | %(levelname)-8s | %(filename)s-%(funcName)s-%lineno)04d | %(message)s
外部模块以测试日志:
#test.py
import logging
logger = logging.getLogger(__name__)
def testLog():
logger.debug("Debug Test")
logger.info("Info Test")
logger.warning("Warning Test")
logger.error("Error Test")
主文件:
#__init__.py
import logging
import logging.config
from datetime import datetime
logging.config.fileConfig('logging.conf', disable_existing_loggers = False)
logger = logging.getLogger('MainLogger')
fileHandler = logging.FileHandler('{:%Y-%m-%d}.log'.format(datetime.now()))
formatter = logging.Formatter('%(asctime)s | %(levelname)-8s | %(lineno)04d | %(message)s')
fileHandler.setFormatter(formatter)
logger.addHandler(fileHandler)
if __name__ == "__main__":
import test
logger.debug("Debug Test")
test.testLog()
当前,当我运行__init__.py
并正在创建日志文件时,所有日志消息当前都与IDLE3 shell一起显示。 但是,在日志文件本身中,唯一正在记录的消息是来自__init__.py
的“调试测试”。 来自test.py
模块的消息均未记录在日志文件中。
我怎么了
在test.py
它先获取logger
对象,然后再在__init__.py
对其进行配置。 确保在获取任何记录器实例之前先配置记录模块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.