ubuntu

如何配置Ubuntu Python日志

小樊
38
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('这是一条普通信息')  # 示例日志

说明

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

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

[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('通过配置文件记录日志')  # 示例日志

说明

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)

说明

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

1. 结合logrotate实现日志轮转

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

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

说明

三、可选:集成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 查看日志
    

说明

总结

0
看了该问题的人还看了