簡體   English   中英

Logger.info從不輸出

[英]Logger.info never outputs

為什么在python中logger.info("print something")不輸出。 我見過以前問過的問題,但不存在解決方案。 我不想用logger.debuglogger.warning看到的文字。

只需logger.info應該打印文本,否則這有什么用?

logging.conf文件如下

[loggers]
keys=root

[handlers]
keys=stream

[formatters]
keys=formatter

[logger_root]
level=INFO
handlers=stream

[handler_stream]
class=StreamHandler
level=INFO
formatter=formatter
args=(sys.stderr,)

[formatter_formatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

訪問記錄器的演示代碼:

import logging
logger = logging.getLogger()

if __name__ == '__main__':
    logger.info("logger")
    print("print")

輸出僅print ,而不是logger 因此logger.info無法正常工作。

默認情況下,根記錄器(您說logger.info時使用的記錄器)的級別設置為WARN

您可以執行以下操作:

logging.basicConfig(level=logging.INFO)

logging.getLogger().setLevel(logging.INFO)

似乎您沒有加載配置文件。 您應該添加以下內容:

logging.config.fileConfig('path_to_logging.conf')

logger = logging.getLogger()

因為現在您正在使用默認的WARNING級別。

編輯:為了使用logging.config,您也必須導入它:

import logging.config

因此完整的代碼應為:

import logging
import logging.config

logging.config.fileConfig('path_to_logging.conf')
logger = logging.getLogger()

if __name__ == '__main__':
    logger.info("logger")
    print("print")

上面的代碼,帶有以下logging.conf (與我相同,除了我刪除了sentry部件):

[loggers]
keys=root

[handlers]
keys=stream

[formatters]
keys=formatter

[logger_root]
level=INFO
handlers=stream

[handler_stream]
class=StreamHandler
level=INFO
formatter=formatter
args=(sys.stderr,)

[formatter_formatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

確實有效:

$ ./test_script3.py
2016-05-23 15:37:40,437 - root - INFO - logger
print

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM