#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 公共日志配置文件 提供统一的日志配置,支持文件和控制台输出 可以被多个模块共享使用 """ import os import logging from datetime import datetime def setup_logging(log_name, log_dir="logs", level=logging.INFO, console_output=True, file_output=True): """ 设置日志配置 Args: log_name: 日志器名称 log_dir: 日志文件目录 level: 日志级别 console_output: 是否输出到控制台 file_output: 是否输出到文件 """ # 创建logs目录 if file_output and not os.path.exists(log_dir): os.makedirs(log_dir) # 创建logger logger = logging.getLogger(log_name) logger.setLevel(level) # 清除已有的handlers,避免重复 logger.handlers.clear() # 日志格式 formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # 文件输出 if file_output: # 生成日志文件名(包含日期) log_filename = f"{log_dir}/{log_name}_{datetime.now().strftime('%Y%m%d')}.log" file_handler = logging.FileHandler(log_filename, encoding='utf-8') file_handler.setLevel(level) file_handler.setFormatter(formatter) logger.addHandler(file_handler) # 控制台输出 if console_output: console_handler = logging.StreamHandler() console_handler.setLevel(level) console_handler.setFormatter(formatter) logger.addHandler(console_handler) return logger def get_logger(log_name, log_dir="logs", level=logging.INFO): """ 获取配置好的logger Args: log_name: 日志器名称 log_dir: 日志文件目录 level: 日志级别 Returns: 配置好的logger实例 """ return setup_logging(log_name, log_dir, level)