在Debian系統中管理Python日志,通??梢允褂肞ython標準庫中的logging
模塊。以下是一些基本的配置和使用方法:
import logging
# 創建logger
logger = logging.getLogger("my_logger")
logger.setLevel(logging.DEBUG)
# 創建文件處理器
fh = logging.FileHandler("/tmp/myapp.log")
fh.setLevel(logging.DEBUG)
# 創建控制臺處理器
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# 創建格式化程序
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# 將格式化程序添加到處理器
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 將處理器添加到logger
logger.addHandler(fh)
logger.addHandler(ch)
# 記錄不同級別的日志消息
logger.debug("這是一條debug級別的日志")
logger.info("這是一條info級別的日志")
logger.warning("這是一條warning級別的日志")
logger.error("這是一條error級別的日志")
logger.critical("這是一條critical級別的日志")
可以使用logging.handlers.RotatingFileHandler
來實現日志輪轉。例如,按大小滾動日志:
from logging.handlers import RotatingFileHandler
rot_handler = RotatingFileHandler(filename='app.log', maxBytes=10*1024*1024, backupCount=5, encoding='utf-8')
logger.addHandler(rot_handler)
可以自定義日志格式,例如輸出JSON格式的日志:
import json
class JsonFormatter(logging.Formatter):
def format(self, record):
return json.dumps({
"timestamp": self.formatTime(record),
"logger": record.name,
"level": record.levelname,
"message": record.msg,
"context": getattr(record, 'ctx', {})
}, ensure_ascii=False)
formatter = JsonFormatter()
rot_handler.setFormatter(formatter)
可以使用過濾器來記錄特定級別的日志:
class SensitiveFilter(logging.Filter):
def filter(self, record):
return record.levelno != logging.DEBUG
sensitive_filter = SensitiveFilter()
logger.addFilter(sensitive_filter)
除了標準庫,還可以使用第三方庫如loguru
來簡化日志管理:
from loguru import logger
logger.add("app.log", rotation="10 MB") # 日志文件超過10MB自動輪轉
logger.info("這條日志會被寫入文件!")
通過以上方法,可以在Debian系統中有效地管理Python日志,確保日志信息的記錄、輪轉和過濾都符合應用的需求。