logging库的使用!☃️

logging库的使用

1.Formatter

在Python中,logging.Formatter是用于配置日志消息的格式的类。它允许你指定日志消息的输出格式。logging.Formatter类有两个主要参数:

  1. fmt:这是一个字符串,用于指定日志消息的输出格式。可以使用格式化代码来包含日志记录中的各种信息,例如时间戳、日志级别、消息内容等。
  2. datefmt:这是一个可选参数,用于指定时间戳的格式。如果日志消息中包含日期和时间信息,可以使用这个参数来指定输出的时间戳格式。

例如,使用logging.Formatter类设置日志消息的格式的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import logging

# 创建一个Formatter对象
formatter = logging.Formatter(fmt='%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')

# 创建一个StreamHandler,并设置其Formatter
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)

# 创建一个Logger对象
logger = logging.getLogger('example')
logger.setLevel(logging.DEBUG)

# 将StreamHandler添加到Logger中
logger.addHandler(stream_handler)

# 输出日志消息
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.')

在这个示例中,fmt参数指定了日志消息的输出格式,其中包含了时间戳、日志级别和消息内容;datefmt参数指定了时间戳的格式为年-月-日 时:分:秒。

tips:

1.日志消息的输出格式:

  • %(asctime)-15s: 这个部分表示日志记录的时间,格式为日志消息被创建的时间,通过 asctime 属性提供。-15s 指定了一个最小宽度为 15 个字符的字段,并且左对齐填充空白。这意味着无论实际时间字符串的长度是多少,都会被填充到 15 个字符的宽度,并向左对齐。
  • %(levelname)s: 这个部分表示日志级别,即日志消息的重要性等级,例如 DEBUG、INFO、WARNING、ERROR 或 CRITICAL。
  • %(message)s: 这个部分表示实际的日志消息内容,即要记录的信息文本。

2.时间戳的格式:

  • %a: 星期的缩写,例如 “Mon”, “Tue” 等。
  • %d: 日期,即月中的第几天(1-31)。
  • %b: 月份的缩写,例如 “Jan”, “Feb” 等。
  • %Y: 四位数的年份(例如:1998, 2004, 2022)。
  • %H: 小时(24小时制,00-23)。
  • %M: 分钟(00-59)。
  • %S: 秒(00-59)。

2.Level

2.1 日志级别

在 Python 的 logging 模块中,定义了以下几个日志级别(按照严重程度递增的顺序):

  1. DEBUG: 最详细的日志级别,用于提供关于程序运行状态的详细信息,通常用于调试目的。
  2. INFO: 提供程序运行状态的一般信息,表明程序正在正常工作。
  3. WARNING: 表示可能出现问题的情况,但不会影响程序的正常运行。
  4. ERROR: 表示已经发生了错误,但是不会导致程序停止运行。
  5. CRITICAL: 表示严重的错误,可能导致程序无法继续运行。

这些日志级别在 logging 模块中通过对应的方法来记录日志消息,分别是 debug(), info(), warning(), error(), 和 critical() 方法。当设置日志记录器的级别时,高于或等于该级别的日志消息将被记录,低于该级别的日志消息将被忽略。

2.2 setLevel

setLevel 是 Python logging 模块中用于设置日志记录器的日志级别的方法。通过这个方法,可以控制日志记录器记录日志消息的最低级别。

例如,如果你设置了一个日志记录器 logger,你可以通过以下方式设置其记录的最低级别:

1
2
3
4
5
6
7
import logging

# 创建一个日志记录器
logger = logging.getLogger('example_logger')

# 设置日志记录器的级别为DEBUG
logger.setLevel(logging.DEBUG)

在这个例子中,setLevel(logging.DEBUG) 将会使得日志记录器 logger 记录所有级别的日志消息,包括 DEBUG、INFO、WARNING、ERROR 和 CRITICAL。如果你希望日志记录器只记录警告级别及以上的日志消息,可以将级别设置为 logging.WARNING

1
logger.setLevel(logging.WARNING)

这样,DEBUG 和 INFO 级别的日志消息就不会被记录了。setLevel 方法设置的级别会应用到该日志记录器以及其所有子记录器上,除非子记录器单独设置了不同的级别。

3.Handler

3.1 FileHandler

logging.FileHandler 是 Python logging 模块中用于将日志消息记录到文件的处理器(handler)。它允许你指定一个文件名,将日志消息写入到该文件中。

以下是一个简单的示例,演示如何使用 FileHandler 将日志消息记录到文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import logging

# 创建一个日志记录器
logger = logging.getLogger('example_logger')
logger.setLevel(logging.DEBUG)

# 创建一个文件处理器,将日志消息记录到文件中
file_handler = logging.FileHandler('example.log')

# 设置文件处理器的日志级别为DEBUG
file_handler.setLevel(logging.DEBUG)

# 创建一个格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 将格式化器应用到文件处理器上
file_handler.setFormatter(formatter)

# 将文件处理器添加到日志记录器中
logger.addHandler(file_handler)

# 记录一些日志消息
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')

3.2 StreamHandler

logging.StreamHandler 是 Python logging 模块中用于将日志消息输出到流(例如标准输出流)的处理器(handler)。它允许你指定一个流对象,将日志消息写入到该流中,通常用于将日志消息输出到控制台或者其他标准输出设备上。

以下是一个简单的示例,演示如何使用 StreamHandler 将日志消息输出到控制台:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import logging

# 创建一个日志记录器
logger = logging.getLogger('example_logger')
logger.setLevel(logging.DEBUG)

# 创建一个流处理器,将日志消息输出到控制台
stream_handler = logging.StreamHandler()

# 设置流处理器的日志级别为DEBUG
stream_handler.setLevel(logging.DEBUG)

# 创建一个格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 将格式化器应用到流处理器上
stream_handler.setFormatter(formatter)

# 将流处理器添加到日志记录器中
logger.addHandler(stream_handler)

# 记录一些日志消息
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')

4.basicConfig

logging.basicConfig() 是 Python logging 模块中用于简化配置日志系统的方法。它允许你通过一次调用来设置日志系统的一些基本配置,包括日志级别、输出格式、输出目标等。

1
2
3
4
logging.basicConfig(
level=level,
handlers=[fh, sh]
)

5.初始化

1
2
logger = logging.getLogger()
logger.info('具体内容')

logging库的使用!☃️
https://yangchuanzhi20.github.io/2024/02/27/算法/python/python库的使用/python中logging库的使用/
作者
白色很哇塞
发布于
2024年2月27日
许可协议