在Ubuntu系統中,可以通過配置Python的logging
模塊和系統日志管理工具(如logrotate)來實現日志管理。以下是詳細的步驟和示例:
logging
模塊進行日志管理基本配置:
首先,使用logging
模塊進行基本配置,將日志記錄到文件中。
import logging
# 配置日志記錄到文件
logging.basicConfig(filename='app.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# 記錄日志
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')
使用多個日志處理器: 可以同時將日志輸出到控制臺和文件中。
import logging
# 創建日志記錄器
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# 創建文件處理器
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)
file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(file_formatter)
# 創建控制臺處理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_formatter = logging.Formatter('%(levelname)s - %(message)s')
console_handler.setFormatter(console_formatter)
# 添加處理器到日志記錄器
logger.addHandler(file_handler)
logger.addHandler(console_handler)
# 記錄日志
logger.debug('this is a debug message')
logger.info('this is an info message')
安裝logrotate: 如果未安裝logrotate,可以使用以下命令安裝:
sudo apt update
sudo apt install logrotate
配置logrotate:
編輯或創建一個新的logrotate配置文件,例如/etc/logrotate.d/myapp
:
sudo nano /etc/logrotate.d/myapp
添加以下內容:
/var/log/myapp/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root root
sharedscripts
postrotate
/bin/kill -HUP $(cat /var/run/myapp.pid 2>/dev/null) 2>/dev/null || true
endscript
}
手動測試配置文件: 在應用配置之前,可以手動測試配置文件是否正確:
sudo logrotate -vf /etc/logrotate.d/myapp
自動運行logrotate: logrotate通常是通過系統的定時任務(cron)自動運行的??梢圆榭春驮O置logrotate的定時任務:
cat /etc/cron.daily/logrotate
如果任務不存在,可以手動創建一個:
sudo vim /etc/cron.daily/logrotate
添加以下內容:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
保存并賦予執行權限:
sudo chmod +x /etc/cron.daily/logrotate
檢查日志輪轉是否生效:
可以通過查看日志文件是否被輪轉和壓縮,以及查看/var/lib/logrotate/status
文件來檢查日志輪轉是否生效。
通過以上步驟,你可以在Ubuntu系統中配置Python日志管理和日志輪轉,從而更高效地管理日志文件。