import logging
|
import os
|
from datetime import datetime
|
|
from auto_media_publisher.config.conf_base import LOG_DIR,DEBUG
|
|
def get_logger(platform, user):
|
logger = logging.getLogger(f"{platform}_{user}")
|
if not logger.handlers:
|
logger.setLevel(logging.DEBUG) # 设置最低级别为 DEBUG,交由 handler 控制输出
|
|
date_str = datetime.now().strftime('%Y-%m-%d')
|
base_filename = f"{platform}_{user}_{date_str}"
|
|
normal_log_file = os.path.join(LOG_DIR, f"{base_filename}.log")
|
error_log_file = os.path.join(LOG_DIR, f"error_{base_filename}.log")
|
|
# 日志格式
|
formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s')
|
|
# 普通日志(INFO 以下,包括 INFO、DEBUG、WARNING)
|
info_handler = logging.FileHandler(normal_log_file, encoding='utf-8')
|
info_handler.setLevel(logging.DEBUG)
|
info_handler.addFilter(lambda record: record.levelno < logging.ERROR)
|
info_handler.setFormatter(formatter)
|
logger.addHandler(info_handler)
|
|
# 错误日志(ERROR 及以上)
|
error_handler = logging.FileHandler(error_log_file, encoding='utf-8')
|
error_handler.setLevel(logging.ERROR)
|
error_handler.setFormatter(formatter)
|
logger.addHandler(error_handler)
|
|
# 控制台输出(可选,仅 DEBUG 模式下输出全部)
|
if DEBUG:
|
console_handler = logging.StreamHandler()
|
console_formatter = logging.Formatter('[%(levelname)s] %(message)s')
|
console_handler.setFormatter(console_formatter)
|
console_handler.setLevel(logging.DEBUG)
|
logger.addHandler(console_handler)
|
|
return logger
|
|
|
PLATFORM_LOGGER = get_logger("platform","admin")
|