Python3 如何添加日志

本文介绍了一个Python日志管理系统,包括如何创建日志对象、设置日志级别、日志路径及日志文件名,同时实现了日志文件大小限制及备份功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os
import logging
import logging.handlers
import time


def get_log(logger_name, log_path, log_level):
    """
    # 获取日志对象
    :param logger_name: 日志名称
    :param log_path: 日志目录
    :param log_level: 日志级别
    :return:
    """
    # 创建一个logger
    assert logger_name is not None and isinstance(logger_name, str)
    if os.path.exists(log_path) is False:
        os.makedirs(log_path)
    assert log_level != "" and log_level is not None
    assert log_path != "" and log_path is not None
    log_dict = {'INFO': logging.INFO, 'DEBUG': logging.DEBUG, 'ERROR' : logging.ERROR, 'WARN': logging.WARN}
    assert log_dict.get(log_level) is not None
    logger = logging.getLogger(logger_name)
    logger.setLevel(log_dict.get(log_level))

    # 设置日志存放路径,日志文件名
    # 获取本地时间,转换为设置格式
    rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
    # 通过字符串拼接设置日志文件名
    all_log_name = log_path + str(logger_name) + "_" + rq + ".log"
    err_log_name = log_path + str(logger_name) + "_" + rq + "_error.log"

    # 写入文件,如果文件超过100M,仅保留5个文件
    fh = logging.handlers.RotatingFileHandler(all_log_name, maxBytes=1024*1024*100, backupCount=5)
    fh.setLevel(log_dict.get(log_level))
    # 创建一个handler写入错误日志
    eh = logging.handlers.RotatingFileHandler(err_log_name, maxBytes=1024*1024*100, backupCount=5)
    eh.setLevel(log_dict.get(log_level))
    # 创建一个handler输出到控制台
    ch = logging.StreamHandler()
    ch.setLevel(log_dict.get(log_level))

    # 定义日志输出格式
    # 以时间-日志器名称-日志级别-日志内容的形式展示
    all_log_formatter = logging.Formatter("%(asctime)s %(pathname)s %(filename)s %(funcName)s %(lineno)s \
              %(levelname)s - %(message)s", "%Y-%m-%d %H:%M:%S")

    # 以时间-日志器名称-日志级别-文件名-函数行号-错误内容定义错误日志
    error_log_formatter = logging.Formatter("%(asctime)s %(pathname)s %(filename)s %(funcName)s %(lineno)s \
              %(levelname)s - %(message)s", "%Y-%m-%d %H:%M:%S")

    # 将定义好的输出形式添加到handler
    fh.setFormatter(all_log_formatter)
    ch.setFormatter(all_log_formatter)
    eh.setFormatter(error_log_formatter)

    # 给logger添加handler
    logger.addHandler(fh)
    logger.addHandler(ch)
    logger.addHandler(ch)
    return logger
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值