import os
import socket

# 获取主机名，方便区分容器
HOSTNAME = socket.gethostname()
# 检测日志文件的路径是否存在，不存在则创建
LOG_PATHS = [
    f"log/{HOSTNAME}/ucloud",
    f"log/{HOSTNAME}/error",
]
for path in LOG_PATHS:
    if not os.path.exists(path):
        os.makedirs(path)

# 配置字典
LOGGING_CONFIG = {
    'version': 1,  # 必需，指定配置格式的版本
    'disable_existing_loggers': False,  # 是否禁用已经存在的logger实例

    # formatters定义了不同格式的日志样式
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S',
        },
    },

    # handlers定义了不同类型的日志处理器
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',  # 控制台处理器
            'level': 'DEBUG',
            'formatter': 'standard',
            'stream': 'ext://sys.stdout',  # 输出到标准输出，默认编码跟随系统，一般为UTF-8
        },
        'file': {
            'class': 'logging.handlers.TimedRotatingFileHandler',  # 文件处理器，支持日志滚动
            'level': 'INFO',
            'formatter': 'standard',
            'filename': f'log/{HOSTNAME}/fcb_photo_review.log',  # 日志文件路径
            'when': 'midnight',
            'interval': 1,
            'backupCount': 14,  # 保留的备份文件数量
            'encoding': 'utf-8',  # 显式指定文件编码为UTF-8以支持中文
        },
        'ucloud': {
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'level': 'INFO',
            'formatter': 'standard',
            'filename': f'log/{HOSTNAME}/ucloud/fcb_photo_review_ucloud.log',
            'when': 'midnight',
            'interval': 1,
            'backupCount': 14,
            'encoding': 'utf-8',
        },
        'error': {
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'level': 'INFO',
            'formatter': 'standard',
            'filename': f'log/{HOSTNAME}/error/fcb_photo_review_error.log',
            'when': 'midnight',
            'interval': 1,
            'backupCount': 14,
            'encoding': 'utf-8',
        },
    },

    # loggers定义了日志记录器
    'loggers': {
        '': {  # 根记录器
            'handlers': ['console', 'file'],  # 关联的处理器
            'level': 'DEBUG',  # 根记录器的级别
            'propagate': False,  # 是否向上级传播日志信息
        },
        'ucloud': {
            'handlers': ['console', 'ucloud'],
            'level': 'DEBUG',
            'propagate': False,
        },
        'error': {
            'handlers': ['console', 'file', 'error'],
            'level': 'DEBUG',
            'propagate': False,
        }
    },
}
