Python logging 详细使用方式

发布时间 2023-08-09 14:23:58作者: 你的小可爱吖

在Python中,使用logging模块进行日志记录非常方便。其中,basicConfig()函数是logging模块中最基本的配置函数,用于设置日志记录的基本配置。

basicConfig()函数的语法如下:

logging.basicConfig(**kwargs)

 

参数说明:

  • filename:日志输出的文件名。如果指定了该参数,则日志会输出到文件中,而不是默认的输出到控制台。

  • filemode:日志文件的打开模式,默认为'a',表示追加写入。也可以指定为'w',表示覆盖写入。

  • format:日志输出的格式。可以使用特定的占位符来指定日志的输出内容和格式。

  • datefmt:日期格式化字符串。如果指定了该参数,则会将日志中的日期按照指定的格式进行格式化。

  • level:日志的输出级别。可以设置为DEBUG、INFO、WARNING、ERROR、CRITICAL等级别。

  • stream:日志输出的流。可以指定为sys.stdout、sys.stderr或者文件对象。

  • style:格式化字符串的样式。可以设置为'%'、'{'或者'$'。默认为'%'。

下面是一个使用basicConfig()函数的示例:

import logging

logging.basicConfig(
  filename='example.log', 
  filemode='w', 
  format='%(asctime)s %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s', 
  level=logging.WARNING
)

logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')

 

这个示例中,我们将日志输出到名为example.log的文件中,使用覆盖写入模式。日志的格式为"[时间] - [级别] - [消息]",例如"2021-01-01 12:00:00 - DEBUG - This is a debug message"。日志的输出级别为DEBUG,所以所有级别的日志都会被记录。

要按照日志文件大小进行分文件,可以使用RotatingFileHandler类来实现。RotatingFileHandler类是logging模块提供的一个日志处理器,它可以在日志文件达到一定大小时自动创建一个新的日志文件。

下面是一个示例代码,演示如何按照日志文件大小分文件:

import logging
from logging.handlers import RotatingFileHandler
​
# 创建一个RotatingFileHandler对象,设置日志文件名、文件大小和备份文件个数
handler = RotatingFileHandler(filename='example.log', maxBytes=1024, backupCount=3)
​
# 设置日志输出格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
​
# 创建一个Logger对象,并将RotatingFileHandler对象添加到Logger中
logger = logging.getLogger()
logger.addHandler(handler)
​
# 设置日志级别
logger.setLevel(logging.DEBUG)
​
# 输出日志信息
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

 

在上述示例中,我们创建了一个RotatingFileHandler对象,指定了日志文件名为example.log,最大文件大小为1024字节,备份文件个数为3。当日志文件达到最大大小时,会自动创建一个新的日志文件,并将旧的日志文件进行备份。