学习Logging

1、Loger的基本配置

文件名:learn_log.py

# ---encoding:utf-8---
# @Time    : 2024/8/8 16:15
# @Author  : 公众号:右恩
# @File    : learn_log.py
# @Project : weRobotProject
# @Software: PyCharm
# love 
# If I can't be a god, I'll be a beast

import logging
import sys


def _reset_logger(log):
    for handler in log.handlers:
        handler.close()
        log.removeHandler(handler)
        del handler
    log.handlers.clear()
    log.propagate = False
    console_handle = logging.StreamHandler(sys.stdout)
    console_handle.setFormatter(
        logging.Formatter(
            "[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d] - %(message)s",
            datefmt="%Y-%m-%d %H:%M:%S",
        )
    )
    file_handle = logging.FileHandler("run.log", encoding="utf-8")
    file_handle.setFormatter(
        logging.Formatter(
            "[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d] - %(message)s",
            datefmt="%Y-%m-%d %H:%M:%S",
        )
    )
    log.addHandler(file_handle)
    log.addHandler(console_handle)

def _get_logger():
    log = logging.getLogger("log")
    _reset_logger(log)
    log.setLevel(logging.INFO)
    return log


# 日志句柄
logger = _get_logger()

2、调用logger

# ---encoding:utf-8---
# @Time    : 2024/8/8 16:15
# @Author  : huakuohao
# @File    : learn_log1.py
# @Project : weRobotProject
# @Software: PyCharm
# love 
# If I can't be a god, I'll be a beast


from learn_log import logger

logger.info("hello world!")
logger.error("hello world!")
logger.debug("hello world")
logger.critical("hello world!")

3、AI解释

这段代码定义了一个自定义的日志记录器(Logger),用于在 Python 程序中输出日志信息。下面是代码的主要部分及其功能的解释:

  1. resetlogger (log) 函数:
    • 这个函数的作用是重置传入的日志记录器对象 log,移除并关闭所有已存在的处理器(handlers),清除处理器的列表,并设置日志记录器不向上级传播消息。
    • 接着,它创建了两个新的处理器:一个用于控制台输出的 StreamHandler 和一个用于写入文件的 FileHandler。
    • 每个处理器都设置了格式化器(Formatter),以定义日志信息的格式,包括日志级别、时间戳、文件名和行号以及日志消息本身。
    • 最后,这两个处理器被添加到日志记录器中。
  2. getlogger () 函数:
    • 这个函数获取或创建一个名为 “log” 的日志记录器对象。
    • 调用 resetlogger (log) 来初始化或重置日志记录器的状态。
    • 设置日志记录器的级别为 logging.INFO,这意味着只有 INFO 及以上级别的日志(如 WARNING, ERROR, CRITICAL)会被记录。
    • 返回配置好的日志记录器对象。
  3. logger = getlogger ():
    • 这行代码调用了 getlogger () 函数,并将返回的日志记录器对象赋值给变量 logger。
    • 这样,logger 就可以在程序的其他部分被用来记录日志了。
      总结来说,这段代码提供了一个灵活的日志记录器配置,允许同时在控制台和文件中记录格式化的日志信息,并且可以轻松地通过修改 resetlogger 函数中的设置来调整日志记录的行为。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值