一个比较好用的python logger脚本
标签搜索

一个比较好用的python logger脚本

irx999
2024-11-05 / 0 评论 / 25 阅读 / 正在检测是否收录...

在需要添加日志的python文件中

#注入
from modules.logger import get_logger
logger = get_logger(__name__,"sql.log")
#日志写入
logger.warning("%s的%s的最大值为None,返回默认的None",\
                            table_name,select_columns)
""" 日志模块 """
import logging
import os
import tomllib
from logging.handlers import RotatingFileHandler
with open('modules/config.toml', 'rb') as f:
    config = tomllib.load(f)

def get_logger(name, log_name="wr.log",):
    """
    获取日志对象
    :param name: 日志名称 填入 "__name__"
    :param log_name: 日志文件名称

    usage:

    from modules.logger import get_logger
    logger = get_logger(__name__)
    logger.info("这是一个info 的log信息有%s,%s等信息", param1, param2,)

    """
    # 获取日志目录
    # log_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), "logs")
    log_dir = config["DEBUG"]["LOG_DIR"]

    if not os.path.exists(log_dir):
        os.makedirs(log_dir)

    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)

    formatter = logging.Formatter("%(asctime)s - %(levelname)s -"
                                   "[%(filename)s:%(lineno)d] -%(funcName)s  - %(message)s")

    # 创建一个滚动文件处理器,每个日志文件最大大小为5M,保存5个旧日志文件
    rf_handler = RotatingFileHandler(
        os.path.join(log_dir, log_name),
        maxBytes=5 * 1024 * 1024,
        backupCount=5,
        encoding="utf-8",
    )
    rf_handler.setFormatter(formatter)
    logger.addHandler(rf_handler)

    # 如果是调试模式,则将日志输出到控制台
    is_debug_mode_enabled = config["DEBUG"]["DEBUGMODE_TRIGGER"]
    if is_debug_mode_enabled:
        #print("Debug mode is on, log will be output to console.")
        logger.setLevel(logging.DEBUG)
        console_handler = logging.StreamHandler()
        console_handler.setFormatter(formatter)
        logger.addHandler(console_handler)

    return logger
1

评论 (0)

取消