Python 日誌簡介
該模組定義了為應用程式和庫實現靈活事件記錄系統的函式和類。
使用標準庫模組提供的日誌記錄 API 的主要好處是所有 Python 模組都可以參與日誌記錄,因此你的應用程式日誌可以包含你自己的訊息,這些訊息與來自第三方模組的訊息整合在一起。
所以,讓我們開始:
直接在程式碼中配置示例
import logging
logger = logging.getLogger()
handler = logging.StreamHandler()
formatter = logging.Formatter(
'%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.debug('this is a %s test', 'debug')
輸出示例:
2016-07-26 18:53:55,332 root DEBUG this is a debug test
通過 INI 檔案配置示例
假設該檔名為 logging_config.ini。有關檔案格式的更多詳細資訊,請參見日誌教程的日誌記錄配置部分。
[loggers]
keys=root
[handlers]
keys=stream_handler
[formatters]
keys=formatter
[logger_root]
level=DEBUG
handlers=stream_handler
[handler_stream_handler]
class=StreamHandler
level=DEBUG
formatter=formatter
args=(sys.stderr,)
[formatter_formatter]
format=%(asctime)s %(name)-12s %(levelname)-8s %(message)s
然後在程式碼中使用 logging.config.fileConfig()
:
import logging
from logging.config import fileConfig
fileConfig('logging_config.ini')
logger = logging.getLogger()
logger.debug('often makes a very good meal of %s', 'visiting tourists')
通過字典配置示例
從 Python 2.7 開始,你可以使用包含配置詳細資訊的字典。 PEP 391 包含配置字典中的必需元素和可選元素的列表。
import logging
from logging.config import dictConfig
logging_config = dict(
version = 1,
formatters = {
'f': {'format':
'%(asctime)s %(name)-12s %(levelname)-8s %(message)s'}
},
handlers = {
'h': {'class': 'logging.StreamHandler',
'formatter': 'f',
'level': logging.DEBUG}
},
root = {
'handlers': ['h'],
'level': logging.DEBUG,
},
)
dictConfig(logging_config)
logger = logging.getLogger()
logger.debug('often makes a very good meal of %s', 'visiting tourists')