【Python常用模块之logging模块】---日志输出功能(示例代码)

发布时间 2023-12-24 20:27:57作者: Unfool
title:  【Python常用模块之logging模块】---日志输出功能(示例代码)
date:  2023-12-24  20:14:06 
updated: 2023-12-24 20:23:00
description:  【Python常用模块之logging模块】---日志输出功能(示例代码)
cover: 
      https://pythonjishu.com/tdcgatffvrvdoop/

2023年6月5日 下午9:34 • python
一、Python常用模块logging——日志输出功能

Python有一个称之为logging的标准库,可对Python程序进行日志输出,并输出至控制台或者存储于文件中。日志输出可分为不同的等级(debug、info、warning、error、critical),并可对输出进行格式化。logging模块是Python中非常常用的一个模块,几乎所有的应用程序都需要记录日志。下面介绍一下logging模块常用的功能和代码示例。

二、使用举例

(1)基本使用示例

下面是一个基本的logger使用示例代码:

import logging

def test_log():
# 日志文件存放路径
LOG_FILE_PATH = 'test.log'

# getLogger获取日志logger
logger = logging.getLogger()

# 设置日志记录等级
logger.setLevel(logging.INFO)

# 创建输出格式:时间、日志等级、日志内容
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

# 设置控制台输出
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)

# 设置文件输出
file_handler = logging.FileHandler(filename=LOG_FILE_PATH, mode='a')
file_handler.setFormatter(formatter)

# 将设置好的输出处理器添加到logger
logger.addHandler(console_handler)
logger.addHandler(file_handler)

# 进行日志输出
logger.info('Hello, world!')

test_log()
代码说明:

getLogger获取logger对象;
设置日志记录等级为INFO,即输出INFO、WARNNING、ERROR、CRITICAL等级的日志;
设定日志输出格式,并设置表现形式(这里为时间、日志等级、日志内容);
设置控制台输出和文件输出;
利用addHandler把已经设置好输出格式的控制台输出和文件输出,加入到logger中;
最后利用logger.info、logger.warning、logger.error、logger.critical等方法输出日志。
(2)记录不同等级的日志

下面介绍如何记录不同等级的日志。

编写日志记录器

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

创建handler(记录日志等级 >= DEBUG)

fh = logging.FileHandler('debug.log')
fh.setLevel(logging.DEBUG)

创建handler(记录日志等级 >= INFO)

ch = logging.StreamHandler()
ch.setLevel(logging.INFO)

创建formatter

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

添加formatter到handler

fh.setFormatter(formatter)
ch.setFormatter(formatter)

添加handler到logger

logger.addHandler(fh)
logger.addHandler(ch)

几种日志输出方式

logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
代码说明:

getLogger获取logger对象;
设置日志记录等级为DEBUG,即输出DEBUG、INFO、WARNNING、ERROR、CRITICAL等级的日志;
创建记录DEBUG级别日志的文件输出handler;
创建记录INFO级别日志的控制台输出handler;
创建日志formatter;
设置handler的formatter;
利用addHandler把已经设置好输出格式的控制台输出和文件输出,加入到logger中;
最后利用logger.debug、logger.info、logger.warning、logger.error、logger.critical等方法输出日志。其中output输出方式可以在handler中设置。
三、总结

以上是Python中日志输出功能的介绍和示例,logging模块提供了丰富的日志输出功能,灵活的应用logging模块可以实现简单的日志输出和复杂的日志分析与统计等功能。