在Ubuntu系統中,Python日志的配置和管理可以通過以下幾種方法實現:
logging
模塊Python標準庫中的logging
模塊提供了靈活且強大的日志記錄功能。以下是一個基本的配置示例:
import logging
# 配置日志記錄器
logging.basicConfig(
level=logging.DEBUG, # 設置日志級別
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', # 日志格式
datefmt='%Y-%m-%d %H:%M:%S', # 時間格式
filename='app.log', # 日志文件名
filemode='a' # 文件模式(追加)
)
# 獲取日志記錄器實例
logger = logging.getLogger(__name__)
# 記錄不同級別的日志
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')
你可以使用配置文件(如JSON、YAML或INI格式)來管理日志配置,這樣可以更方便地進行修改和維護。
config.json
{
"version": 1,
"formatters": {
"standard": {
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S"
}
},
"handlers": {
"file": {
"class": "logging.FileHandler",
"filename": "app.log",
"level": "DEBUG",
"formatter": "standard",
"mode": "a"
}
},
"loggers": {
"": {
"handlers": ["file"],
"level": "DEBUG",
"propagate": true
}
}
}
Python代碼
import logging
import json
# 讀取配置文件
with open('config.json', 'r') as f:
config = json.load(f)
# 配置日志記錄器
logging.config.dictConfig(config)
# 獲取日志記錄器實例
logger = logging.getLogger(__name__)
# 記錄不同級別的日志
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')
有一些第三方庫提供了更高級的日志管理功能,例如loguru
。
loguru
from loguru import logger
# 配置日志記錄器
logger.add("app.log", rotation="500 MB", level="DEBUG")
# 記錄不同級別的日志
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')
logging.handlers.RotatingFileHandler
或logging.handlers.TimedRotatingFileHandler
來實現日志文件的自動輪轉。cron
任務來實現。import logging
from logging.handlers import RotatingFileHandler
# 配置日志記錄器
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# 創建一個RotatingFileHandler,最大文件大小為1MB,保留3個備份
handler = RotatingFileHandler('app.log', maxBytes=1*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')
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')
通過以上方法,你可以在Ubuntu系統中靈活地配置和管理Python日志。