发布于2026-06-30 阅读(0)
扫一扫,手机访问
在CentOS上处理Python日志,如果拆开来看,核心其实就三件事:怎么把日志记录下来、怎么防止日志文件撑爆磁盘、以及出了问题时怎么快速从日志里定位线索。下面一步步展开,看完就能上手。

logging模块,这是最标准的方式。logrotate,自动给日志文件做“瘦身”和归档。logging模块记录日志这个模块是Python自带的,不用额外安装。配置起来也很直接,一个basicConfig就能搞定基本需求。比如下面这个例子,日志会同时输出时间、日志级别和消息,并写入到app.log文件中:
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
filename='app.log',
filemode='a'
)
logging.info('This is an info message')
logging.error('This is an error message')
实际项目中还可以按不同模块创建独立的logger,让日志更清晰。不过对于初学者来说,上面的配置已经能应付大多数场景了。
logrotate管理日志文件日志如果放任不管,几天就能攒到几个G。CentOS自带logrotate,专门处理这类问题。配置起来也非常简单:在/etc/logrotate.d/目录下新建一个配置文件,比如叫myapp:
sudo nano /etc/logrotate.d/myapp
然后填入以下内容(注意把路径换成你的实际日志文件路径):
/path/to/your/app.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root root
}
来逐条拆解一下这些配置项的实际含义:
daily——每天执行一次轮转,你也可以改成weekly或monthly,根据日志量来定。missingok——如果日志文件暂时不存在,不会报错,避免服务刚启动时出现噪音。rotate 7——保留最近7个历史版本,更早的自动删除。compress——轮转后的旧日志用gzip压缩,能节省不少磁盘空间。notifempty——如果日志文件是空的,就不进行轮转,避免生成一堆无用的空文件。create 640 root root——轮转后自动创建一个新的空日志文件,权限设为640,属主和属组都是root。配置完成后,可以用logrotate -d /etc/logrotate.d/myapp先干跑一下,看看有没有语法错误。
日志写好了、轮转也配好了,接下来就是怎么从日志里快速发现问题。方法有很多,这里列出三种最常见的:
grep命令最直接的方式,在终端里一行命令就能过滤出所有包含“ERROR”的行:
grep 'ERROR' app.log
awk命令如果觉得grep不够灵活,awk可以做更精细的过滤和格式化输出:
awk '/ERROR/ {print}' app.log
当分析逻辑比较复杂时,自己写个Python脚本是最灵活的。下面这个例子统计日志中ERROR出现的总次数:
import re
def analyze_logs(log_file):
error_count = 0
with open(log_file, 'r') as file:
for line in file:
if 'ERROR' in line:
error_count += 1
print(f'Total errors: {error_count}')
analyze_logs('app.log')
当然,实际场景中你可能需要按时间范围、模块名称、错误类型等维度做聚合分析,这时候稍微扩展一下这个脚本就能满足需求。
从日志记录到轮转,再到分析,这三步走下来,CentOS上的Python日志处理就基本成型了。关键是用好logging模块把日志规范地写下来,再借助logrotate做好自动化运维,最后根据需要选合适的工具去分析。这套流程既能保证日志不失控,又能让排查问题时少走弯路。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8