MCPcopy Create free account
hub / github.com/KnowledgeXLab/LeanRAG / setup_logger

Function setup_logger

tools/logger_factory.py:41–118  ·  view source on GitHub ↗

初始化并返回一个日志记录器。 该函数确保所有日志记录器共享相同的处理程序,包括: - 基于时间戳的日志文件 - latest.log 文件 - 控制台输出(带颜色) 参数: - logger_name: 日志记录器的名称 - level: 日志级别,默认为 logging.INFO 返回: - logger: 配置好的日志记录器

(logger_name, level=logging.INFO)

Source from the content-addressed store, hash-verified

39 return message
40
41def setup_logger(logger_name, level=logging.INFO):
42 '''
43 初始化并返回一个日志记录器。
44
45 该函数确保所有日志记录器共享相同的处理程序,包括:
46 - 基于时间戳的日志文件
47 - latest.log 文件
48 - 控制台输出(带颜色)
49
50 参数:
51 - logger_name: 日志记录器的名称
52 - level: 日志级别,默认为 logging.INFO
53
54 返回:
55 - logger: 配置好的日志记录器
56 '''
57 logger = logging.getLogger(logger_name)
58 logger.setLevel(level)
59 logger.propagate = True # 确保日志传递到根记录器
60
61 # 检查根记录器是否已配置处理程序
62 if not logging.getLogger().hasHandlers():
63 # 获取主脚本的路径
64 main_script = sys.argv[0]
65 if not main_script:
66 # 在某些环境下(如交互式解释器),sys.argv[0] 可能为空
67 main_script_dir = os.getcwd()
68 main_script_name = 'unknown'
69 else:
70 main_script_path = os.path.abspath(main_script)
71 main_script_dir = os.path.dirname(main_script_path)
72 main_script_name = os.path.splitext(os.path.basename(main_script_path))[0]
73
74 # 创建日志目录:{主脚本目录}/logs/{主脚本名称}/
75 log_dir = os.path.join('logs', main_script_name)
76 os.makedirs(log_dir, exist_ok=True)
77
78 # 生成基于时间戳的日志文件名
79 timestamp = time.strftime("%Y%m%d_%H%M%S", time.localtime())
80 timestamp_log_file = os.path.join(log_dir, f'{timestamp}.log')
81
82 # 定义 latest.log 文件路径
83 latest_log_file = os.path.join(log_dir, 'latest.log')
84
85 # 定义日志格式
86 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
87
88 # 定义带颜色的日志格式化器
89 colored_formatter = ColoredFormatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
90
91 # 处理程序1:基于时间戳的日志文件(带轮转)
92 timestamp_handler = RotatingFileHandler(
93 timestamp_log_file,
94 maxBytes=1000*1024*1024, # 1000 MB
95 backupCount=5,
96 encoding='utf-8'
97 )
98 timestamp_handler.setFormatter(formatter)

Callers 6

triple.pyFile · 0.90
llm_infer.pyFile · 0.90
corpus.pyFile · 0.90
create_kg.pyFile · 0.90
kg_score.pyFile · 0.90
test_setup_setup_loggerFunction · 0.85

Calls 1

ColoredFormatterClass · 0.85

Tested by 1

test_setup_setup_loggerFunction · 0.68