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