欢迎访问宙启技术站
智能推送

Python中使用getLogger()方法记录日志的实例教程

发布时间:2023-12-26 22:35:46

在Python中,我们可以使用logging模块来记录日志。logging模块提供了一个Logger类,可以创建Logger对象来记录日志。

Logger对象可以使用getLogger()方法来创建,该方法接受一个可选的参数,即日志名称。如果不指定日志名称,则默认使用root。

以下是使用getLogger()方法记录日志的实例教程:

1. 导入logging模块

import logging

2. 创建一个Logger对象

logger = logging.getLogger('example')

可以指定一个日志名称作为参数,如果不指定,默认使用root。

Logger对象会根据名称来判断是否已经创建了对应的Logger实例,如果已经创建,则返回已有的实例,否则创建一个新的Logger实例。

3. 设置Logger对象的日志级别

Logger对象的日志级别决定了哪些信息可以输出。

可以使用Logger对象的setLevel()方法来设置日志级别。

logger.setLevel(logging.DEBUG)

常用的日志级别有以下几个:

- DEBUG:详细的调试信息

- INFO:一般的信息

- WARNING:警告信息

- ERROR:错误信息

- CRITICAL:严重错误信息

可以根据需要设置不同的日志级别。

4. 创建一个日志处理器

日志处理器决定了日志信息的输出方式,可以将日志输出到控制台、文件、网络等不同地方。

可以使用logging模块中提供的各种Handler类来创建日志处理器。

console_handler = logging.StreamHandler()

创建一个StreamHandler对象,用于将日志输出到控制台。

5. 设置日志处理器的日志级别

同样,日志处理器也有日志级别,可以使用setLevel()方法来设置。

console_handler.setLevel(logging.DEBUG)

6. 创建日志格式化器

日志格式化器决定了日志输出的格式。

可以使用logging模块中提供的Formatter类来创建日志格式化器。

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

创建一个Formatter对象,其中包含了时间、日志名称、日志级别和日志信息。

7. 将日志处理器添加到Logger对象中

logger.addHandler(console_handler)

使用addHandler()方法将日志处理器添加到Logger对象中。

8. 将日志格式化器添加到日志处理器中

console_handler.setFormatter(formatter)

使用setFormatter()方法将日志格式化器添加到日志处理器中。

9. 记录日志

可以使用Logger对象的各种方法来记录日志,如debug()、info()、warning()、error()、critical()等。

logger.debug('This is a debug message')
logger.info('This is an info message')

以上是一个使用getLogger()方法记录日志的基本教程。

以下是一个完整的实例,将日志同时输出到控制台和文件:

import logging

logger = logging.getLogger('example')
logger.setLevel(logging.DEBUG)

console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)

file_handler = logging.FileHandler('example.log')
file_handler.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

logger.addHandler(console_handler)
logger.addHandler(file_handler)

logger.debug('This is a debug message')
logger.info('This is an info message')

在上述示例中,创建了一个名为example的Logger对象,将日志级别设置为DEBUG。

创建了一个StreamHandler对象,将日志级别设置为DEBUG,然后设置了一个Formatter对象。

创建了一个FileHandler对象,将日志输出到example.log文件中,同时设置了日志级别和格式化器。

最后,使用addHandler()方法将两个处理器添加到Logger对象中,然后使用debug()和info()方法记录了两条日志信息。