首页主机资讯Ubuntu系统中Python日志怎么配置

Ubuntu系统中Python日志怎么配置

时间2025-10-10 12:42:04发布访客分类主机资讯浏览1155
导读:Ubuntu系统中Python日志配置方法 1. 使用内置logging模块的基本配置(快速上手) Python标准库的logging模块提供了基础配置能力,适合简单场景。通过basicConfig函数可快速设置日志级别、输出格式、文件路径...

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信息:系统崩溃')  # 严重错误(需立即处理)

说明

  • 日志级别从低到高为DEBUGINFOWARNINGERRORCRITICAL,设置level后,低于该级别的日志不会输出。
  • filename参数指定日志文件路径(如/var/log/myapp/app.log),需确保Python进程对该路径有写入权限(可通过chmod命令修改权限)。

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('发生错误(将输出到控制台和文件)')

说明

  • RotatingFileHandler实现了日志轮转(当文件达到指定大小时,自动创建新文件并保留指定数量的旧文件),避免日志文件过大。
  • 配置文件中的args参数需根据处理器类调整(如FileHandler只需文件名,RotatingFileHandler需额外指定大小和备份数量)。

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

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

  • RotatingFileHandler:按文件大小轮转(如每1MB一个文件,保留3个)。
  • TimedRotatingFileHandler:按时间轮转(如每天、每小时生成一个新文件)。

示例:按天轮转日志(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('这是一条按天轮转的日志')

说明

  • when参数指定轮转时间单位(midnight=午夜、S=秒、M=分钟、H=小时、D=天、W0-W6=周一到周日)。
  • Ubuntu下建议将日志文件存放在/var/log/目录下(系统日志默认路径),并通过crontablogrotate工具定期清理旧日志(如删除超过30天的日志)。

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信息")

说明

  • logger.add()方法用于添加日志处理器,支持自动轮转rotation参数)、日志过滤filter参数)、异步记录enqueue参数)等功能。
  • Loguru的配置更直观,适合快速开发和调试,但生产环境建议使用内置logging模块(更稳定、可扩展)。

注意事项

  • 权限问题:确保Python进程对日志文件路径有写入权限(如/var/log/目录需用sudo chmod 777 /var/log/myapp修改权限,或使用用户目录下的路径如~/logs/app.log)。
  • 日志级别:生产环境建议设置为INFOWARNING(避免过多调试日志影响性能),开发环境设置为DEBUG(便于排查问题)。
  • 日志格式:建议包含%(asctime)s(时间)、%(name)s(记录器名)、%(levelname)s(级别)、%(message)s(消息)等关键信息,便于后续分析。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu系统中Python日志怎么配置
本文地址: https://pptw.com/jishu/722374.html
如何在Ubuntu上使用Python进行网络编程 如何排查ubuntu php-fpm启动慢的问题

游客 回复需填写必要信息