45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
|
#日志文件
|
|||
|
import logging
|
|||
|
import sys
|
|||
|
|
|||
|
def setup_logger():
|
|||
|
"""
|
|||
|
配置一个全局日志记录器,支持输出到控制台和文件。
|
|||
|
"""
|
|||
|
# 创建一个日志记录器
|
|||
|
logger = logging.getLogger("ViolationDetectorLogger")
|
|||
|
logger.setLevel(logging.DEBUG) # 设置最低级别为DEBUG
|
|||
|
|
|||
|
# 如果已经有处理器了,就不要重复添加,防止日志重复打印
|
|||
|
if logger.hasHandlers():
|
|||
|
return logger
|
|||
|
|
|||
|
# --- 控制台处理器 ---
|
|||
|
console_handler = logging.StreamHandler(sys.stdout)
|
|||
|
# 对于控制台,我们只显示INFO及以上级别的信息
|
|||
|
console_handler.setLevel(logging.INFO)
|
|||
|
console_formatter = logging.Formatter(
|
|||
|
'%(asctime)s - %(levelname)s - [%(module)s:%(lineno)d] - %(message)s',
|
|||
|
datefmt='%Y-%m-%d %H:%M:%S'
|
|||
|
)
|
|||
|
console_handler.setFormatter(console_formatter)
|
|||
|
|
|||
|
# --- 文件处理器 ---
|
|||
|
file_handler = logging.FileHandler("violation_detector.log", mode='a', encoding='utf-8')
|
|||
|
# 对于文件,我们记录所有DEBUG及以上级别的信息
|
|||
|
file_handler.setLevel(logging.DEBUG)
|
|||
|
file_formatter = logging.Formatter(
|
|||
|
'%(asctime)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s',
|
|||
|
datefmt='%Y-%m-%d %H:%M:%S'
|
|||
|
)
|
|||
|
file_handler.setFormatter(file_formatter)
|
|||
|
|
|||
|
# 将处理器添加到日志记录器
|
|||
|
logger.addHandler(console_handler)
|
|||
|
logger.addHandler(file_handler)
|
|||
|
|
|||
|
return logger
|
|||
|
|
|||
|
# 创建并导出logger实例
|
|||
|
logger = setup_logger()
|