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