繁体   English   中英

Python日志,不写入文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM