这段代码是一个初始化日志的函数。它用于设置日志的格式和输出方式。
首先,它导入了必要的模块和库。然后,定义了一个名为`init_logging()`的函数。
在函数内部,它创建了一个日志器对象,并将其等级设置为INFO级别。日志器是用来处理所有的日志记录操作的核心对象。
接下来,它定义了两个处理器:控制台处理器和文件处理器。控制台处理器用于将日志信息输出到控制台,而文件处理器用于将日志信息输出到指定的文件中。文件处理器是通过`TimedRotatingFileHandler`创建的,它可以按一定的时间间隔自动将日志文件进行切割,以便于管理和查看之前的日志记录。
然后,它定义了日志的格式化器。格式化器用于指定日志记录的格式,包括时间、日志级别、日志器名称、打印日志的函数名称、模块名称、代码行数和日志消息等信息。
最后,它将格式化器分别添加到两个处理器中,并将处理器添加到日志器中。这样,当调用日志记录函数(如`logging.info()`)时,日志信息会按照指定的格式输出到控制台和文件中。
如果你想使用这段代码,只需调用`init_logging()`函数即可完成日志的初始化设置。然后,你可以使用`logging.info()`等函数来记录日志。这些日志信息将根据设置的格式输出到控制台和文件中。
# 初始化日志函数
import logging
import app
from logging import handlers
def init_logging():
# 1 创建一个日志器:如果不写日志器的名称,那么会使用默认的日志器root
logger = logging.getLogger()
# 2 设置日志的等级:控制打印日志的级别,使用logging打印日志时,如果
# 日志级别低于设置的级别,那么不会打印日志
logger.setLevel(logging.INFO)
# 3 设置处理器
# 控制台处理器:控制把日志输出到控制台
sf = logging.StreamHandler()
# 文件处理器:控制把日志输出到外部文件当中,需要提前定义文件的路径和文件名称
logname = app.BASE_DIR + "/log/ego.log"
fh = logging.handlers.TimedRotatingFileHandler(logname,when='M', interval=1,backupCount=7, encoding='utf-8')
# 4 设置格式化器:指打印日志时的格式内容(日志器名称、打印日志的函数名称、模块名称、代码行数、日志消息等内容)
fmt = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
formmater = logging.Formatter(fmt)
# 5 将格式化器添加到处理器当中(文件处理器和控制台处理器都要添加)
sf.setFormatter(formmater)
fh.setFormatter(formmater)
# 6 将处理器添加到日志器当中
logger.addHandler(sf)
logger.addHandler(fh)
# init_logging()
# logging.info("在utis中,测试日志会不会打印")