MCPcopy
hub / github.com/WEIFENG2333/VideoCaptioner / setup_logger

Function setup_logger

videocaptioner/core/utils/logger.py:8–73  ·  view source on GitHub ↗

创建并配置一个日志记录器,INFO级别使用简化格式。 参数: - name: 日志记录器的名称 - level: 日志级别 - info_fmt: INFO级别的日志格式字符串 - default_fmt: 其他级别的日志格式字符串 - datefmt: 时间格式字符串 - log_file: 日志文件路径

(
    name: str,
    level: int = LOG_LEVEL,
    info_fmt: str = "%(message)s",  # INFO级别使用简化格式
    default_fmt: str = "%(asctime)s - %(name)s - %(levelname)s - %(message)s",  # 其他级别使用详细格式
    datefmt: str = "%Y-%m-%d %H:%M:%S",
    log_file: str = str(LOG_PATH / "app.log"),
    console_output: bool = True,
)

Source from the content-addressed store, hash-verified

6
7
8def setup_logger(
9 name: str,
10 level: int = LOG_LEVEL,
11 info_fmt: str = "%(message)s", # INFO级别使用简化格式
12 default_fmt: str = "%(asctime)s - %(name)s - %(levelname)s - %(message)s", # 其他级别使用详细格式
13 datefmt: str = "%Y-%m-%d %H:%M:%S",
14 log_file: str = str(LOG_PATH / "app.log"),
15 console_output: bool = True,
16) -> logging.Logger:
17 """
18 创建并配置一个日志记录器,INFO级别使用简化格式。
19
20 参数:
21 - name: 日志记录器的名称
22 - level: 日志级别
23 - info_fmt: INFO级别的日志格式字符串
24 - default_fmt: 其他级别的日志格式字符串
25 - datefmt: 时间格式字符串
26 - log_file: 日志文件路径
27 """
28
29 logger = logging.getLogger(name)
30 logger.setLevel(level)
31
32 if not logger.handlers:
33 class LevelSpecificFormatter(logging.Formatter):
34 """Thread-safe formatter that uses different formats per log level."""
35 def format(self, record):
36 # Use local variable instead of mutating shared _style._fmt
37 fmt = info_fmt if record.levelno == logging.INFO else default_fmt
38 formatter = logging.Formatter(fmt, datefmt=datefmt)
39 return formatter.format(record)
40
41 level_formatter = LevelSpecificFormatter(default_fmt, datefmt=datefmt)
42
43 # 只在console_output为True时添加控制台处理器
44 if console_output:
45 console_handler = logging.StreamHandler()
46 console_handler.setLevel(level)
47 console_handler.setFormatter(level_formatter)
48 logger.addHandler(console_handler)
49
50 # 文件处理器
51 if log_file:
52 Path(log_file).parent.mkdir(parents=True, exist_ok=True)
53 file_handler = logging.handlers.RotatingFileHandler(
54 log_file, maxBytes=10 * 1024 * 1024, backupCount=5, encoding="utf-8"
55 )
56 file_handler.setLevel(level)
57 file_handler.setFormatter(level_formatter)
58 logger.addHandler(file_handler)
59
60 # 设置特定库的日志级别为ERROR以减少日志噪音
61 error_loggers = [
62 "urllib3",
63 "requests",
64 "openai",
65 "httpx",

Callers 15

base.pyFile · 0.90
client.pyFile · 0.90
split.pyFile · 0.90
base.pyFile · 0.90
factory.pyFile · 0.90
ass_renderer.pyFile · 0.90
font_utils.pyFile · 0.90
providers.pyFile · 0.90
openai_fm.pyFile · 0.90
base.pyFile · 0.90
openai_tts.pyFile · 0.90

Calls 1

Tested by

no test coverage detected