logru模块配置日志,实现不同模块的日志隔离,以及使用better_exceptions详细记录错误信息

  • 使用 loguru 库配置日志记录器。
  • 提供日志文件的轮转和保留策略。
  • 实现了灵活添加不同模块日志,并且保留了原始的日志,做到导入不同的logger按需写入相应的日志文件,且不会混乱添加,做到日志隔离
点击查看代码
# log_config.py
from loguru import logger
import os
# 若是多进程,创建文件时可带上pid
logger.add(
    "log/"+str(os.getpid())+"base_log_{time:YYYY-MM-DD}.log",
    filter=lambda record: record["extra"].get("name") is None,
    retention="7 days",
    rotation="00:00",
    level='INFO',
    backtrace=True,
    enqueue=True
)
logger.add(
    "log/module1_{time:YYYY-MM-DD}.log",
    filter=lambda record: record["extra"].get("name") == "module1",
    retention="7 days",
    rotation="00:00",
    level='INFO',
    backtrace=True,
    enqueue=True
)
logger.add(
    "log/tb_td_coupling_{time:YYYY-MM-DD}.log",
    filter=lambda record: record["extra"].get("name") == "tb_td_coupling",
    retention="7 days",
    rotation="00:00",
    level='INFO',
    backtrace=True,
    enqueue=True,
    # format="{message}"
)
 
logger1 = logger.bind(name="module1")
tb_td_logger = logger.bind(name="tb_td_coupling")

可以使用better_exceptions详细记录错误信息,并记录日志,error在控制台,变量的引线指向变量值,但是用txt文本打开,由于字宽高不等会导致引线错位,所以可以使用Notepad查看,不会错位,效果比较好

点击查看代码
from log_config import tb_td_logger
# 配置 better_exceptions,在入口处配置一次即可
import sys
better_exceptions.encoding.ENCODING = sys.getdefaultencoding() #在Windows环境下,会出现乱码,改下ENCODING即可
better_exceptions.MAX_LENGTH = None        # 显示完整代码行
better_exceptions.SUPPORTS_COLOR = False    # 强制不是彩色输出
better_exceptions.hook()
def err_log():
    formatted_lines = better_exceptions.format_exception(*sys.exc_info())
    formatted_text = ''.join(formatted_lines)
    tb_td_logger.error(formatted_text)
try:
    print(1/0)
except:
    err_log()

image
image

posted @ 2025-12-04 14:18  树下黑猫  阅读(4)  评论(0)    收藏  举报