2 回答

TA貢獻1848條經驗 獲得超2個贊
使用所需的流和文件處理程序創建一個新的記錄器:
import logger, sys
logger = logging.Logger('AmazeballsLogger')
#Stream/console output
logger.handler = logging.StreamHandler(sys.stdout)
logger.handler.setLevel(logging.WARNING)
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
logger.handler.setFormatter(formatter)
logger.addHandler(self.handler)
#File output
fh = logging.FileHandler("test.log")
fh.setLevel(logging.DEBUG)
fh.setFormatter(logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s"))
logger.addHandler(fh)
你已經準備好兜風了:
print(logger.handlers)
logger.critical("critical")
logger.error("error")
logger.warning("warning")
logger.info("info")
logger.debug("debug")
以下控制臺輸出僅顯示“警告”及更高版本:
[<StreamHandler stdout (WARNING)>, <FileHandler C:\Users\...\test.log (DEBUG)>]
2020-04-13 17:52:57,729 - CRITICAL - critical
2020-04-13 17:52:57,731 - ERROR - error
2020-04-13 17:52:57,734 - WARNING - warning
測試時.log包含所有級別:
2020-04-13 17:52:57,729 - AmazeballsLogger - CRITICAL - critical
2020-04-13 17:52:57,731 - AmazeballsLogger - ERROR - error
2020-04-13 17:52:57,734 - AmazeballsLogger - WARNING - warning
2020-04-13 17:52:57,736 - AmazeballsLogger - INFO - info
2020-04-13 17:52:57,736 - AmazeballsLogger - DEBUG - debug
關鍵是要了解日志記錄處理程序的工作原理,并檢查它們是否使用正確的級別(如上面的代碼單元所示,只是打印 logger.handlers)。此外,覆蓋基本配置是一種不好的做法,當您在同一 Python 環境中運行多個記錄器時,可能會導致問題。我推薦這個視頻,它闡明了python日志記錄中的流/文件處理程序。

TA貢獻1998條經驗 獲得超6個贊
我從日志記錄文檔中得到了這個例子
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
filename='myapp.log',
filemode='w')
logging.debug('A debug message')
logging.info('Some information')
logging.warning('A shot across the bows')
以及我在網絡上看到的例子,他們都在創建文件。因此,請嘗試將文件的擴展名從txt更改為日志.log
添加回答
舉報