Ubuntu Python 日志管理最佳实践
一 基础配置与分级
import logging
fmt = '%(asctime)s %(name)s %(levelname)s [%(threadName)s] %(message)s'
datefmt = '%Y-%m-%d %H:%M:%S'
logging.basicConfig(
level=logging.INFO,
format=fmt,
datefmt=datefmt,
handlers=[
logging.StreamHandler(),
logging.FileHandler('app.log', mode='a', encoding='utf-8'),
],
)
logger = logging.getLogger(__name__)
try:
1 / 0
except Exception:
logger.exception("unexpected error")
以上做法覆盖了级别设置、格式统一、异常堆栈与多目标输出等关键要点。二 日志轮转与保留策略
/var/log/myapp/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
systemctl reload myapp.service >/dev/null 2>&1 || true
endscript
}
三 结构化日志与集中化
from json_log_formatter import JSONFormatter
import logging
logger = logging.getLogger("json")
handler = logging.StreamHandler()
handler.setFormatter(JSONFormatter())
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.info("user login", extra={"user": "alice", "ip": "192.168.1.10"})
四 多进程与多线程实践
五 运维与合规建议