在Debian系统中管理Python日志,通常可以使用Python标准库中的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日志,确保日志信息的记录、轮转和过滤都符合应用的需求。