阅读量:2
在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实现集中式日志管理。 - 参考资料:
以上就是关于“如何配置Ubuntu Python日志”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm