ubuntu

Ubuntu系统中Python日志怎么配置

小樊
44
2025-10-10 01:29:56
栏目: 编程语言

Ubuntu系统中Python日志配置方法

1. 使用内置logging模块的基本配置(快速上手)

Python标准库的logging模块提供了基础配置能力,适合简单场景。通过basicConfig函数可快速设置日志级别、输出格式、文件路径等参数。
示例代码:

import logging
# 配置日志:DEBUG级别、自定义格式、输出到app.log(追加模式)
logging.basicConfig(
    level=logging.DEBUG,  # 日志级别(DEBUG/INFO/WARNING/ERROR/CRITICAL)
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',  # 日志格式(时间+记录器名+级别+消息)
    datefmt='%Y-%m-%d %H:%M:%S',  # 时间格式
    filename='app.log',  # 日志文件路径(Ubuntu下可指定绝对路径,如/home/user/app.log)
    filemode='a'  # 文件模式:'a'(追加,默认)或'w'(覆盖)
)
# 获取记录器(默认使用根记录器)
logger = logging.getLogger(__name__)  # __name__为当前模块名,便于区分不同模块的日志
# 记录不同级别日志
logger.debug('Debug信息:程序启动')  # 仅当level=DEBUG时输出
logger.info('Info信息:用户登录成功')  # 常规运行信息
logger.warning('Warning信息:磁盘空间不足')  # 潜在问题预警
logger.error('Error信息:数据库连接失败')  # 运行时错误
logger.critical('Critical信息:系统崩溃')  # 严重错误(需立即处理)

说明

2. 使用配置文件(推荐:灵活易维护)

通过配置文件(如INI、JSON、YAML)管理日志配置,避免硬编码,方便修改无需改动代码。以下以INI格式为例(Ubuntu下常用):

步骤1:创建配置文件(如logging.conf

[loggers]
keys=root  # 定义根记录器(必选)

[handlers]
keys=consoleHandler,fileHandler  # 定义处理器(控制台+文件)

[formatters]
keys=simpleFormatter  # 定义格式化器(统一日志格式)

# 根记录器配置:关联处理器
[logger_root]
level=DEBUG  # 根记录器级别
handlers=consoleHandler,fileHandler  # 关联的处理器列表

# 控制台处理器:输出到终端
[handler_consoleHandler]
class=StreamHandler  # 处理器类(StreamHandler输出到流,如stdout/stderr)
level=DEBUG  # 处理器级别(可单独设置,低于根记录器则生效)
formatter=simpleFormatter  # 关联的格式化器
args=(sys.stdout,)  # 参数:输出到标准输出(控制台)

# 文件处理器:输出到文件(带轮转)
[handler_fileHandler]
class=logging.handlers.RotatingFileHandler  # 文件处理器(支持轮转)
level=DEBUG
formatter=simpleFormatter
args=('app.log', 'a', 1024*1024, 3)  # 参数:文件名、模式(追加)、最大大小(1MB)、备份数量(保留3个旧文件)

# 格式化器:定义日志输出格式
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s  # 时间+记录器名+级别+消息
datefmt=%Y-%m-%d %H:%M:%S  # 时间格式

步骤2:Python脚本加载配置文件

import logging
import logging.config
# 加载配置文件(需指定正确路径,如当前目录下的logging.conf)
logging.config.fileConfig('logging.conf')
# 获取记录器(继承根记录器配置)
logger = logging.getLogger(__name__)
# 记录日志(遵循配置文件的规则)
logger.info('程序启动(配置文件模式)')
logger.error('发生错误(将输出到控制台和文件)')

说明

3. 高级配置:日志轮转与清理

日志文件长期积累会占用大量磁盘空间,需通过**轮转(Rotation)**机制自动管理。logging模块提供了两种轮转处理器:

示例:按天轮转日志(TimedRotatingFileHandler

import logging
from logging.handlers import TimedRotatingFileHandler
# 创建记录器
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
# 创建文件处理器(按天轮转,保留7天)
handler = TimedRotatingFileHandler(
    filename='/var/log/myapp/app.log',  # 日志文件路径
    when='midnight',  # 轮转时间(每天午夜)
    interval=1,  # 间隔(1天)
    backupCount=7,  # 保留旧文件数量(7天)
    encoding='utf-8'  # 文件编码(避免中文乱码)
)
# 设置格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# 添加处理器到记录器
logger.addHandler(handler)
# 记录日志
logger.info('这是一条按天轮转的日志')

说明

4. 第三方库:Loguru(简化配置)

若内置logging模块的配置过于复杂,可使用第三方库Loguru(更简洁的API)。

安装Loguru

pip install loguru

示例代码

from loguru import logger
# 配置日志:输出到控制台和文件(自动轮转,保留10个文件)
logger.add("app.log", rotation="10 MB", level="DEBUG", format="{time} - {level} - {message}", enqueue=True)
# 记录日志(无需获取记录器,直接调用logger)
logger.debug("Debug信息")
logger.info("Info信息")
logger.error("Error信息")

说明

注意事项

0
看了该问题的人还看了