在Debian系统中配置与管理Python日志,可结合Python内置模块与系统工具,核心方法如下:
通过logging.basicConfig()快速设置日志级别、格式和输出位置,支持同时输出到控制台和文件:
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
filename='app.log', # 日志文件路径
filemode='a' # 追加模式
)
logging.info("这是一条普通信息")
通过字典或配置文件实现多处理器(如同时输出到控制台和文件)、日志轮转等:
import logging.config
config = {
"version": 1,
"formatters": {
"detailed": {"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "INFO",
"formatter": "detailed"
},
"file": {
"class": "logging.handlers.RotatingFileHandler",
"filename": "app.log",
"maxBytes": 1024*1024, # 1MB
"backupCount": 5, # 保留5个备份
"formatter": "detailed"
}
},
"root": {"level": "DEBUG", "handlers": ["console", "file"]}
}
logging.config.dictConfig(config)
Loguru提供更简洁的API,支持异步写入、自动压缩等:
from loguru import logger
logger.add("app.log", rotation="100 MB", compression="zip") # 按大小轮转并压缩
logger.info("使用Loguru记录日志")
通过系统工具logrotate管理日志文件大小和数量,避免单个文件过大:
/etc/logrotate.d/python_logs:/var/log/python/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 root adm
}
sudo logrotate -vf /etc/logrotate.d/python_logs适用于大规模日志分析,需安装Elasticsearch、Logstash、Kibana,配置Logstash采集Python日志并可视化。
DEBUG,生产环境INFO)。logging.error("错误信息", exc_info=True)。750。tail -f app.log实时查看日志,或grep "关键字" app.log过滤内容。logrotate自动归档。以上方法可灵活组合,满足不同场景下的日志管理需求。