发布于2026-07-13 阅读(0)
扫一扫,手机访问
在CentOS系统里搞Python日志处理,几乎是每个开发者绕不开的日常。别看它基础,但坑不少,用好了能省下大量排错时间。下面就把一些实战中沉淀下来的技巧串一遍。

先从最核心的入手——Python自带的logging模块,它足够强大,而且零依赖。一个典型配置长这样:
import logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
filename='app.log',
filemode='a'
)
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
这里把日志写到了文件里,级别从低到高全开了。但实际生产环境里,日志文件会飞速膨胀,所以日志轮转几乎是刚需。
Python提供了两种现成的轮转处理器,直接用就行。
RotatingFileHandler —— 按文件大小轮转。比如下面这段代码,每个日志文件最大1MB,最多保留3个备份:
from logging.handlers import RotatingFileHandler
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
handler = RotatingFileHandler('app.log', maxBytes=1024*1024, backupCount=3)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.debug('This is a debug message')
TimedRotatingFileHandler —— 按时间轮转。比如每天午夜轮转一次,保留最近7天的日志:
from logging.handlers import TimedRotatingFileHandler
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
handler = TimedRotatingFileHandler('app.log', when='midnight', interval=1, backupCount=7)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.debug('This is a debug message')
两种方式各有用武之地:文件大小轮转适合日志量波动大的场景;时间轮转更符合运维习惯,方便按天归档。
logging模块内置了5个标准级别,从低到高分别是:DEBUG、INFO、WARNING、ERROR、CRITICAL。开发阶段可以开到DEBUG,生产环境通常设在WARNING以上,避免刷屏。关键是,不同模块可以用不同级别,灵活控制输出粒度。
通过format字符串,我们可以定制每条日志携带的字段。除了前面用到的asctime(时间)、name(记录器名)、levelname(级别)、message(消息),还有两个很实用的:
%(filename)s —— 记录日志的文件名%(lineno)d —— 记录日志的行号组合起来就是:'%(asctime)s - %(filename)s:%(lineno)d - %(levelname)s - %(message)s',这样定位问题能直接跳到代码位置,效率翻倍。
单机玩得转,上了规模就不够了。大型系统通常需要把几十个应用实例的日志汇聚到一处。行业里常见的方案是ELK堆栈(Elasticsearch、Logstash、Kibana),或者用Graylog。思路都一样:应用把日志输出到本地文件,由采集器(如Filebeat)发送到中心服务器,再索引、搜索、可视化。这一步虽然属于运维范畴,但开发者了解之后,可以在写日志时就设计好统一格式,避免后期清洗的麻烦。
如果觉得内置logging配置略显繁琐,可以试试loguru。它把配置简化到了一行代码:
from loguru import logger
logger.add('app.log', rotation="500 MB", retention="7 days")
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
自动轮转、自动清理、彩色输出,开箱即用。不过引入第三方库意味着多一个依赖,小项目无所谓,大项目需要评估兼容性。这个取舍,就看具体场景了。
以上这些技巧,基本覆盖了CentOS下Python日志处理的常见需求:从单文件记录到轮转策略,从级别控制到格式设计,再到集中管理和第三方工具。掌握好它们,至少能让你在排查线上问题时,少翻几次日志文件。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8