123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/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)
|