在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):
- 安装ELK组件:
# 安装Elasticsearch、Logstash、Kibana(参考官方文档) - 配置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" } } - 启动服务并访问Kibana:
sudo systemctl start elasticsearch logstash kibana # 访问 http://localhost:5601 查看日志
说明:
- 适合分布式系统或需要复杂分析的场景,需额外部署Elasticsearch等组件。
总结
- 简单场景:直接使用
logging.basicConfig()或配置文件(logging.conf),通过FileHandler和StreamHandler控制输出位置。 - 生产环境:结合
logrotate实现日志轮转,或通过ELK Stack实现集中式日志管理。 - 参考资料:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1398248.html