在Python中,logging模塊提供了靈活的日志處理功能。以下是一些高級技巧:
basicConfig()
方法可以配置日志級別(如DEBUG、INFO、WARNING、ERROR、CRITICAL)和日志格式(如時間戳、日志級別、消息、源代碼文件名等)。import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
logging.Handler
類創建自定義處理器,將日志消息寫入文件、數據庫或通過網絡發送等。class FileHandler(logging.Handler):
def __init__(self, filename):
super().__init__()
self.filename = filename
def emit(self, record):
with open(self.filename, 'a') as f:
f.write(self.format(record) + '\n')
logging.Filter
類為日志消息添加過濾器,只輸出符合特定條件的消息。class MyFilter(logging.Filter):
def filter(self, record):
return 'my_keyword' in record.getMessage()
logger = logging.getLogger(__name__)
logger.addFilter(MyFilter())
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[logging.StreamHandler()])
將日志記錄到控制臺。使用logging.captureWarnings(True)
捕獲Python的警告消息。使用logging.setLogRecordFactory(MyLogRecord)
自定義日志記錄器的記錄格式。使用logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
自定義日志記錄器的格式。使用logging.root.addHandler(my_handler)
將自定義處理器添加到根記錄器。使用logging.root.removeHandler(my_handler)
刪除自定義處理器。使用logging.root.setLevel(logging.DEBUG)
設置根記錄器的日志級別。使用logging.root.propagate(False)
阻止日志消息向上級記錄器傳播。使用logging.captureWarnings(True)
捕獲Python的警告消息。