Python+logging输出到屏幕将log日志写入文件

Python+logging输出到屏幕将log日志写入文件

介绍

在开发过程中,我们经常需要记录程序的运行状态和出现的问题。Python的logging模块可以帮助我们实现日志记录的功能,同时可以灵活地输出到屏幕或者写入文件。

基本概念

在使用logging模块前,我们先了解一些基本概念。

- Logger:日志记录器,负责产生日志消息。

- Handler:处理器,负责将日志记录发送到指定的位置,比如屏幕、文件等。

- Formatter:格式化器,负责对日志进行格式化,比如添加时间、日志级别等。

- Filter:过滤器,负责对日志进行过滤,可以根据日志级别、模块等条件进行过滤。

步骤

下面,我们分步骤介绍如何使用logging模块输出到屏幕并将日志写入文件。

步骤一:导入logging模块

首先,我们需要导入logging模块。

import logging

步骤二:创建Logger对象

接下来,我们创建一个Logger对象,用于产生日志消息。

logger = logging.getLogger('mylogger')

logger.setLevel(logging.DEBUG)

在上面的代码中,我们将Logger的日志级别设置为DEBUG,这样可以记录所有日志消息。

步骤三:创建Handler对象

然后,我们创建一个Handler对象,用于将日志消息发送到指定的位置。

console_handler = logging.StreamHandler()

file_handler = logging.FileHandler('log.txt')

上面的代码中,我们创建了一个用于输出到屏幕的StreamHandler对象和一个用于写入文件的FileHandler对象,并分别赋值给console_handler和file_handler变量。

步骤四:创建Formatter对象

接下来,我们创建一个Formatter对象,用于格式化日志消息。

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

file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(module)s - %(message)s')

在上面的代码中,我们分别创建了用于输出到屏幕的格式化器和写入文件的格式化器。

- 输出到屏幕的格式化器的格式为:“时间-日志级别-日志消息”。

- 写入文件的格式化器的格式为:“时间-日志级别-模块名-日志消息”。

步骤五:添加Formatter对象到Handler对象

然后,我们将步骤四中创建的Formatter对象添加到步骤三中创建的Handler对象中。

console_handler.setFormatter(console_formatter)

file_handler.setFormatter(file_formatter)

步骤六:添加Handler对象到Logger对象

接下来,我们将步骤三中创建的Handler对象添加到步骤二中创建的Logger对象中。

logger.addHandler(console_handler)

logger.addHandler(file_handler)

这样,日志消息就会同时输出到屏幕和写入文件。

步骤七:输出日志消息

最后,我们可以使用Logger对象输出日志消息。

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')

上面的代码中,我们使用Logger对象分别输出了不同级别的日志消息。

总结

通过上面的步骤,我们可以使用Python的logging模块将日志消息同时输出到屏幕和写入文件。这样可以方便我们对程序的运行状态进行监控和查看。

使用logging模块的好处是能够灵活地控制日志的输出级别、输出位置和输出格式。我们可以根据实际需要来配置Logger、Handler和Formatter对象,以满足我们的需求。

在实际开发中,我们可以根据需要将日志记录到不同的文件中,方便进行日志分析和问题排查。

通过合理的设置日志级别和格式化方式,我们可以更好地监控程序运行状态,并为问题排查提供有力支持。

所以,学习使用Python的logging模块输出到屏幕并将日志写入文件是非常实用的技巧,对于程序开发和维护都有很大的帮助。

后端开发标签