"""
|
配置同时打印到控制台和本地的日志方法
|
"""
|
import os
|
import logging
|
from datetime import datetime
|
import constant
|
|
|
# 构造一个loger对象函数
|
def get_logger(name='my_logger', log_dir=constant.LOG_PATH, log_level=logging.INFO):
|
"""
|
获取一个配置好的logger实例。
|
:param name: logger的名称
|
:param log_level: logger的级别
|
:param log_dir: 日志文件存储的目录
|
:return: 配置好的logger实例
|
"""
|
# 确保日志目录存在
|
if not os.path.exists(log_dir):
|
os.makedirs(log_dir)
|
|
# 创建一个FileHandler,用于写入日志文件
|
current_date = datetime.now().strftime('%Y-%m-%d')
|
log_filename = os.path.join(log_dir, f'log_{current_date}.txt')
|
# 创建logger
|
logger = logging.getLogger(name)
|
|
if logger.handlers:
|
for i in range(0, len(logger.handlers)):
|
if len(logger.handlers) == 0:
|
break
|
logger.removeHandler(logger.handlers[0])
|
|
logger.setLevel(log_level)
|
|
fh = logging.FileHandler(log_filename)
|
fh.setLevel(logging.DEBUG) # 你可以根据需要调整文件处理器的级别
|
|
# 创建一个StreamHandler,用于输出到控制台
|
ch = logging.StreamHandler()
|
ch.setLevel(log_level) # 你可以为控制台处理器设置与logger相同的级别
|
|
# 定义handler的输出格式
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
fh.setFormatter(formatter)
|
ch.setFormatter(formatter)
|
|
# 给logger添加handler
|
logger.addHandler(fh)
|
# logger.addHandler(ch)
|
|
# 返回配置好的logger实例
|
return logger
|