Python(logging.getLogger())



logging.getLogger() 是 Python 的 logging 模块中的一个函数,主要用于创建或获取一个日志记录器(logger)对象。logging 模块是 Python 标准库中的一部分,旨在提供灵活的日志记录功能,用于记录应用程序的运行信息,调试信息和错误信息。



1. 基本功能

logging.getLogger() 的基本功能是获取一个指定名称的日志记录器对象。它有以下两个用法:

  • logging.getLogger()(无参数):获取一个根日志记录器(root logger)对象。默认的根日志记录器名称为空字符串 ""
  • logging.getLogger(name)(有参数):获取一个指定名称的日志记录器对象。如果指定的名称在当前日志层次结构中不存在,它会创建一个新日志记录器。

参数:

  • name(可选):日志记录器的名称,通常用模块名或自定义的字符串来命名。以模块名命名可以帮助在日志中识别日志的来源(如 __name__)。

    如果 name 被指定为空字符串 ""logging.getLogger() 会返回根日志记录器对象。

    如果名称为其他值,logging.getLogger(name) 会返回相应名称的日志记录器,或新建一个该名称的日志记录器。

返回值:

  • logging.getLogger() 返回一个 Logger 对象。Logger 是日志记录器对象的基本类,它提供了记录消息、设置日志级别、添加处理器(handler)、格式化日志等功能。


2. 日志记录器的层次结构

日志记录器是分层次组织的,使用点号(.)分隔。例如:

  • logging.getLogger("app")logging.getLogger("app.module") 获取的是不同的日志记录器。
  • appapp.module 的父记录器,这种层级结构允许灵活的日志配置。
  • 父记录器和子记录器可以共享配置信息(如日志级别)。


3. 示例代码

import logging

# 配置日志格式和日志级别
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")

# 获取根日志记录器
root_logger = logging.getLogger()
root_logger.debug("This is a debug message from the root logger.")

# 获取名为 "app" 的日志记录器
app_logger = logging.getLogger("app")
app_logger.info("This is an info message from the app logger.")

# 获取名为 "app.module" 的日志记录器
module_logger = logging.getLogger("app.module")
module_logger.warning("This is a warning message from the app.module logger.")


4. 典型用法

在大型应用中,推荐使用 logging.getLogger(__name__) 获取模块级日志记录器,这样在日志中可以清晰显示消息来源模块。



5. 重要特性

  • 单例模式:每次调用 logging.getLogger(name) 时,若名称相同,则返回相同的日志记录器实例。
  • 继承性:子日志记录器会继承父日志记录器的配置(如处理器、级别等)。
  • 日志过滤:可以通过设置日志级别或过滤器(filter)来控制日志输出。


6. 其他相关函数

  • logging.basicConfig():配置日志系统的基本设置,比如日志输出格式和日志级别。
  • logger.setLevel():用于设置日志记录器的日志级别(如 DEBUGINFOWARNING 等)。
  • logger.addHandler():为日志记录器添加一个处理器对象(如 StreamHandlerFileHandler)来定义日志的输出方式和位置。

通过 logging.getLogger(),可以在应用程序中创建模块化的、分级管理的日志系统。



posted @ 2024-11-04 14:44  做梦当财神  阅读(110)  评论(0编辑  收藏  举报