50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
#日志文件
|
||
import logging
|
||
import sys
|
||
|
||
def setup_logger():
|
||
"""
|
||
配置一个全局日志记录器,支持输出到控制台和文件。
|
||
"""
|
||
# 创建一个日志记录器
|
||
|
||
# 配置日志
|
||
logging.basicConfig(level=logging.INFO)
|
||
logger = logging.getLogger(__name__)
|
||
|
||
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()
|