django 配置全局日志logging按日期切分后生成带日期后缀名称的日志,但全局配置又无法使用suffix参数。该怎么获取info.日期.log格式的日志文件
可以定义个LOGGER_CONFIG, 然后在settings.py里指定就可以了
LOGGER_CONFIG定义:
LOGGER_CONFIG = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"form01": {
"format": "%(asctime)s [%(levelname)s] %(name)s: %(message)s",
"datefmt": "%Y/%m/%d %H:%M:%S %z",
}
},
"handlers": {
"file": {
"class": "logging.handlers.TimedRotatingFileHandler",
"level": "INFO",
"formatter": "form01",
"when": "midnight",
"interval": 1,
"backupCount": 30,
"encoding": "utf-8",
"suffix": "%Y-%m-%d",
"filename": "os.path.join(BASE_DIR, info_file_name)",
},
},
"loggers": {
"root": {"level": "INFO", "handlers": ["file"]},
"django": {"level": "INFO", "handlers": ["file"]},
},
}
settings.py
LOGGING = LOGGER_CONFIG
细节你自己调一下试试。
可以使用suffix参数来设置日期后缀名称。
import os
import time
from logging.handlers import TimedRotatingFileHandler
info_file_name = 'logs/info.log'
file_handler = TimedRotatingFileHandler(
filename=os.path.join(BASE_DIR, info_file_name),
when='midnight',
interval=1,
backupCount=30,
encoding='utf-8',
suffix='%Y-%m-%d'
)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(logging.Formatter('%(asctime)s [%(levelname)s] %(name)s: %(message)s'))
logger = logging.getLogger()
logger.addHandler(file_handler)
这样,将会生成以日期为后缀的日志文件,例如:info.2023-02-08.log。