簡體   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