温馨提示×

如何配置Ubuntu Python日志

小樊
45
2025-08-25 18:14:47
栏目: 编程语言

在Ubuntu上配置Python日志主要有以下两种常用方式:

一、使用Python内置logging模块

通过配置文件或代码灵活控制日志级别、输出位置和格式,适合大多数场景。

1. 基础配置(代码方式)

直接在Python脚本中使用logging.basicConfig()设置日志级别、格式和输出文件:

import logging logging.basicConfig( level=logging.INFO, # 日志级别(DEBUG/INFO/WARNING/ERROR/CRITICAL) format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', # 日志格式 filename='app.log', # 输出到文件(若需同时输出到控制台,需额外配置处理器) filemode='a' # 追加模式(默认) ) logging.info('这是一条普通信息') # 示例日志 

说明

  • level控制日志显示级别,低于该级别的日志将被忽略。
  • filename指定日志文件路径,filemode控制文件写入模式('w'覆盖,'a'追加)。

2. 高级配置(配置文件方式)

通过logging.config模块加载外部配置文件,支持多处理器(如同时输出到控制台和文件)、日志轮转等。

  • 配置文件示例(logging.conf)
[loggers] keys=root [handlers] keys=consoleHandler,fileHandler [formatters] keys=simpleFormatter [logger_root] level=DEBUG handlers=consoleHandler,fileHandler [handler_consoleHandler] class=StreamHandler level=DEBUG formatter=simpleFormatter args=(sys.stdout,) [handler_fileHandler] class=FileHandler level=DEBUG formatter=simpleFormatter args=('app.log', 'a') [formatter_simpleFormatter] format=%(asctime)s - %(name)s - %(levelname)s - %(message)s datefmt=%Y-%m-%d %H:%M:%S 
  • 加载配置
import logging.config logging.config.fileConfig('logging.conf') # 指定配置文件路径 logger = logging.getLogger(__name__) logger.info('通过配置文件记录日志') # 示例日志 

说明

  • 支持通过[handlers]配置多个处理器(如控制台、文件),通过[formatters]定义不同格式。

3. 日志轮转(避免文件过大)

使用RotatingFileHandler实现按大小分割日志文件:

from logging.handlers import RotatingFileHandler handler = RotatingFileHandler( 'app.log', maxBytes=10*1024*1024, # 单个文件最大10MB backupCount=5 # 保留5个备份文件 ) handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')) logging.getLogger().addHandler(handler) 

说明

  • maxBytes设置单个日志文件的最大大小,backupCount设置保留的备份文件数量。

二、使用系统工具辅助管理

1. 结合logrotate实现日志轮转

适用于需要与系统日志管理工具集成的场景。

  • 安装logrotate
sudo apt update && sudo apt install logrotate 
  • 创建配置文件(/etc/logrotate.d/python)
/path/to/python/*.log { daily # 每天轮转 rotate 7 # 保留7天日志 compress # 压缩旧日志 missingok # 忽略缺失文件 create 0640 root root # 创建新日志文件权限 postrotate # 可选:重启Python服务(需根据实际路径修改) # /bin/systemctl restart your-python-service endscript } 

说明

  • 配置文件需指定日志文件路径、轮转周期、保留天数等参数,postrotate可添加重启服务等操作。

三、可选:集成ELK Stack(适合大规模日志分析)

若需集中管理和可视化日志,可配置ELK(Elasticsearch+Logstash+Kibana):

  1. 安装ELK组件
    # 安装Elasticsearch、Logstash、Kibana(参考官方文档) 
  2. 配置Logstash接收Python日志
    /etc/logstash/conf.d/python.conf中添加:
    input { file { path => "/path/to/python/*.log" start_position => "beginning" } } output { elasticsearch { hosts => ["localhost:9200"] index => "python-logs" } } 
  3. 启动服务并访问Kibana
    sudo systemctl start elasticsearch logstash kibana # 访问 http://localhost:5601 查看日志 

说明

  • 适合分布式系统或需要复杂分析的场景,需额外部署Elasticsearch等组件。

总结

  • 简单场景:直接使用logging.basicConfig()或配置文件(logging.conf),通过FileHandlerStreamHandler控制输出位置。
  • 生产环境:结合logrotate实现日志轮转,或通过ELK Stack实现集中式日志管理。
  • 参考资料

0