首页 > 编程语言 >Python(logging.getLogger().addHandler())

Python(logging.getLogger().addHandler())

时间:2024-11-04 17:00:13浏览次数:1  
标签:输出 控制台 logging Python getLogger 处理器 日志 logger

目录



logging.getLogger().addHandler() 是 Python logging 模块中的一个方法,用于将日志处理器(handler)添加到日志记录器(logger)上。addHandler() 使得一个日志记录器可以输出日志到多个目标位置,比如控制台、文件、远程服务器等。

通过添加不同的 Handler 实例,日志记录器可以在不同的场景中灵活地管理日志输出。例如,控制台可以输出简洁的日志信息,而文件记录详细的日志信息。



1. 函数定义

addHandler() 的主要作用是将一个处理器附加到日志记录器上,使日志记录器能够将日志消息发送到该处理器指定的目标位置(如控制台或文件)。

logging.getLogger().addHandler(handler)

参数:

  • handlerHandler 对象,是 logging 模块中的处理器实例,用于定义日志的输出位置和格式。常见的 Handler 类包括:
    • StreamHandler:将日志输出到控制台或任意文件对象。
    • FileHandler:将日志输出到文件。
    • RotatingFileHandler:将日志输出到大小限制的文件,当达到指定大小时自动轮转。
    • TimedRotatingFileHandler:将日志输出到按时间间隔轮转的文件。
    • SocketHandler:将日志发送到网络地址。
    • HTTPHandler:将日志作为 HTTP 请求发送。

返回值:

addHandler() 是一个无返回值的函数。它将处理器附加到日志记录器对象,但不会返回任何内容。



2. 示例代码

以下示例展示了如何使用 logging.getLogger().addHandler() 添加多个处理器,将日志分别输出到控制台和文件:

import logging

# 创建日志记录器
logger = logging.getLogger("example_logger")
logger.setLevel(logging.DEBUG)  # 设置最低日志级别

# 创建控制台处理器
console_handler = logging.StreamHandler()
console_formatter = logging.Formatter("%(levelname)s - %(message)s")
console_handler.setFormatter(console_formatter)

# 创建文件处理器
file_handler = logging.FileHandler("app.log", encoding="utf-8")
file_formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
file_handler.setFormatter(file_formatter)

# 将控制台和文件处理器添加到日志记录器
logger.addHandler(console_handler)
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.")

运行后,会产生以下结果:

  • 控制台输出:

    DEBUG - This is a debug message.
    INFO - This is an info message.
    WARNING - This is a warning message.
    
  • app.log 文件内容:

    2024-11-04 12:00:01 - example_logger - DEBUG - This is a debug message.
    2024-11-04 12:00:02 - example_logger - INFO - This is an info message.
    2024-11-04 12:00:03 - example_logger - WARNING - This is a warning message.
    


3. 常见用途

  • 多目标日志输出:可以将日志输出到多个目标位置,如控制台、文件、远程服务器等。
  • 不同格式的日志输出:可以为不同的处理器设置不同的格式化器,实现不同的日志格式。
  • 多级别日志输出:可以为不同的处理器设置不同的日志级别。例如,控制台显示 INFO 级别及以上的日志,而文件记录所有级别的日志。


4. 重要特性

  • 灵活性:允许添加多个处理器,为不同的场景配置不同的日志输出。
  • 日志格式化:每个处理器可以应用不同的 Formatter,实现个性化的日志格式。
  • 日志级别控制:可以为每个处理器单独设置日志级别,控制日志输出的详细程度。


5. 使用 removeHandler() 清理处理器

如果需要清理处理器,可以使用 removeHandler() 方法:

# 移除控制台处理器
logger.removeHandler(console_handler)


6. 常用处理器类型

  • StreamHandler:用于控制台日志输出。
  • FileHandler:用于文件日志输出。
  • RotatingFileHandlerTimedRotatingFileHandler:用于日志轮转管理。

通过 logging.getLogger().addHandler(),用户可以灵活定义日志的输出方式,以适应不同的日志管理需求。



标签:输出,控制台,logging,Python,getLogger,处理器,日志,logger
From: https://www.cnblogs.com/keye/p/18525719

相关文章

  • Python获取屏幕分辨率,工作区间,任务栏高度
    1、使用win32api创建一个监视器窗口,基于坐标0,0fromwin32apiimportGetMonitorInfofromwin32apiimportMonitorFromPointif__name__=='__main__':monitor_info=GetMonitorInfo(MonitorFromPoint((0,0)))print('monitorinfo:{}'.format(monito......
  • python小白入手之——函数进阶
    函数的返回值有多个函数参数种类:位置参数、关键字参数、缺省参数、不定长参数1.位置参数:调用函数时根据函数定义的参数位置来传递函数(传递的函数和定义的参数的顺序一致)2.关键字参数:纯粹的关键字传参可以不按照固定顺序可以和位置参数混用,位置参数必须在前,且匹配参数顺序......
  • 《Python内置模块006:json:处理JSON数据》
    JSON是一种轻量级的数据交换格式,易于人和机器读写。Python的json模块提供了简单的方法来编码和解码JSON数据一、常用方法json.dumps():将Python对象编码为JSON字符串json.loads():将JSON字符串解码为Python对象json.dump():将Python对象编码为JSON格式,并写入文件json.load()......
  • 强噪声下基于mscnn-bigru-attention深度学习模型CWRU(凯斯西储大学)轴承故障诊断(Pytho
     1.效果视频(以0HP数据集为例,在-30DB下的测试准确率效果)强噪声下基于mscnn-bigru-attention深度学习模型CWRU(凯斯西储大学)轴承故障诊断_哔哩哔哩_bilibili对原始信号分别添加不同强度的高斯白噪声,以模拟实验数据遇到的实际环境中干扰噪声。原始信号(以0HP数据为例进行展示,可......
  • 带界面下的基于mscnn-bigru-attention深度学习模型江南大学轴承故障诊断(Python代码,很
     1。效果视频:基于mscnn-bigru-attention深度学习模型江南大学轴承故障诊断带界面_哔哩哔哩_bilibili 2.江南大学轴承数据集介绍采样频率:50khz,采样时间:10s转速:6008001000/rpm内圈故障:ib外圈故障:ob滚动体故障:tb正常:N 以600转速下的内圈故障数据为例展示:开始数据......
  • 《Python内置模块007:csv:读写CSV文件的模块》
    Python中常用于读写CSV文件的模块是csv。使用该模块可以轻松地读取和写入CSV文件。你可以通过以下方式导入该模块:importcsv有了这个模块,你可以使用csv.reader来读取CSV文件中的数据,并使用csv.writer来将数据写入CSV文件中一、常用方法csv.reader:用于读取CSV文件,将其内......
  • Mac安装python环境
    下载Python直接官网中https://www.python.org/python下载你需要的python版本双击运行安装程序,之后全部点击默认安装。(演示图中显示的文件夹是在废纸篓中,是因为作者已经安装成功,并删除安装程序,如果是使用浏览器默认下载,理论下安装程序是在“下载”文件夹中)执行完安装程序后,......
  • python-16-常见高级函数
    python-16-常见高级函数一.说明python中的基础系列中的关于函数部分,还有一些特殊函数叫高级函数,在真实项目中开发使用频率较高,说句人话,就是真香实用!。二.定义在Python中,高阶函数是指接受其他函数作为参数或返回一个函数的函数。高阶函数使得我们能够以更灵活和简洁的方......
  • 15个Python数据分析实用技巧(非常详细)零基础入门到精通,收藏这一篇就够了
    无论你是刚踏入数据分析大门的新手,还是希望深化技能的老手,这篇文章都将是你旅程中的良师益友。我们将一起探索十个实用的Python数据分析技巧,让你的数据处理能力飞速提升。1.导入数据:Pandas是你的好朋友技巧说明:Pandas库是数据分析的基础,它让数据导入变得轻松。实践示......
  • Python(logging.getLogger())
    目录1.基本功能2.日志记录器的层次结构3.示例代码4.典型用法5.重要特性6.其他相关函数logging.getLogger()是Python的logging模块中的一个函数,主要用于创建或获取一个日志记录器(logger)对象。logging模块是Python标准库中的一部分,旨在提供灵活的日志记录功能,用于......