debian

Debian系统中Python日志如何管理

小樊
44
2025-04-10 03:26:57
栏目: 编程语言

在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日志,确保日志信息的记录、轮转和过滤都符合应用的需求。

0
看了该问题的人还看了