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")
获取的是不同的日志记录器。app
是app.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()
:用于设置日志记录器的日志级别(如DEBUG
、INFO
、WARNING
等)。logger.addHandler()
:为日志记录器添加一个处理器对象(如StreamHandler
、FileHandler
)来定义日志的输出方式和位置。
通过 logging.getLogger()
,可以在应用程序中创建模块化的、分级管理的日志系统。