【学习记录】logging模块简单使用


前言

学习记录,有错误请指正,谢谢


一、logging是什么?

logging 模块是Python标准库中提供的用于日志记录的模块,它允许你在应用程序中记录各种信息,例如警告、错误、调试信息等,以便在运行时进行问题诊断、跟踪应用程序状态以及记录重要事件。

二、使用

1.一个简单案例

代码如下(示例):

import logging # 导入logging

logging.basicConfig() # 基本的日志配置。这里没有传递任何参数,
#日志级别被设置为 WARNING,并且没有指定日志格式。
logging.debug('This is a debug message')#记录了一个 DEBUG 级别的日志消息
logging.info('This is an info message')#记录了一个 info 级别的日志消息
logging.warning('This is a warning message')#记录了一个 warning 级别的日志消息
logging.error('This is an error message')#记录了一个 error 级别的日志消息
logging.critical('This is a critical message')#记录了一个 critical 级别的日志消息

输出结果如下:

WARNING:root:This is a warning message
ERROR:root:This is an error message
CRITICAL:root:This is a critical message

只输出WARNING,ERROR和CRITICAL是因为默认日志级别被设置为 WARNING,只会输出比WARNING更高级别的消息。

2.另一个示例

代码如下(示例):

import logging

# 配置日志格式
logging.basicConfig(
    level=logging.DEBUG,  # 设置日志级别为DEBUG,可以根据需要调整
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    datefmt='%a, %d %b %Y %H:%M:%S',
    handlers=[
        logging.FileHandler("app.log"),  # 将日志保存到文件
        logging.StreamHandler()  # 输出日志到终端
    ]
)

# 输出不同级别的日志
logging.debug("This is a debug message")
logging.info("This is an info message")
logging.warning("This is a warning message")
logging.error("This is an error message")
logging.critical("This is a critical message")

输出结果如下:

Thu, 03 Aug 2023 20:44:46 - root - DEBUG - This is a debug message
Thu, 03 Aug 2023 20:44:46 - root - INFO - This is an info message
Thu, 03 Aug 2023 20:44:46 - root - WARNING - This is a warning message
Thu, 03 Aug 2023 20:44:46 - root - ERROR - This is an error message
Thu, 03 Aug 2023 20:44:46 - root - CRITICAL - This is a critical message

level=logging.DEBUG

  • 设置日志级别为DEBUG级别。

format=“%(asctime)s - %(name)s - %(levelname)s - %(message)s”,

  • 定义了日志消息的格式。
    在这里插入图片描述

datefmt=‘%a, %d %b %Y %H:%M:%S’,

  • 定义了时间输出格式。
    在这里插入图片描述

handlers

  • 是一个处理程序列表,其中包含两个处理程序:
  • FileHandler用于将日志保存到文件(可以指定路径,相对位置会根据程序入口函数指定)。如
    logging.basicConfig(
        level=logging.DEBUG,
        format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
        handlers=[
            logging.FileHandler("/path/to/your/log/directory/app.log"),  # 设置日志文件路径
            logging.StreamHandler()
        ]
    )
    
  • StreamHandler用于将日志输出到终端。

3.logging和logger的区别,为什么要用logger而不是一直用logging?

Python的logging模块中,logger和logging之间的关系是这样的:logging是模块本身,而logger是模块中的一个类的实例。
通常推荐使用logger的实例来进行日志记录的原因有以下几点:

  • 更好的组织和分层: 使用logger的实例可以更好地组织和分层化日志记录。每个模块或组件都可以拥有自己的logger实例,从而更好地区分不同模块的日志输出。这有助于在大型应用程序中跟踪日志,以及进行故障排查和调试。
  • 更灵活的配置: 使用logger实例可以让你在不同的地方配置不同的日志处理程序、级别和格式。这样,你可以根据需要进行更灵活的日志配置,而不影响其他部分的日志记录。
  • 更好的代码质量: 使用logger实例可以提高代码的可维护性和可读性。它允许你在整个应用程序中保持一致的日志记录风格,并且让代码更具可读性,因为你可以直观地了解哪个模块正在记录哪些日志。
  • 更好的性能: 使用logger实例可以避免在多个地方重复配置logging,从而提高性能,因为日志记录器的配置通常只需要执行一次。

创建Logger实例。

import logging

# 配置日志格式
logging.basicConfig(
    level=logging.DEBUG,  # 设置日志级别为DEBUG,可以根据需要调整
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    handlers=[
        logging.FileHandler("app.log"),  # 将日志保存到文件
        logging.StreamHandler()  # 输出日志到终端
    ]
)

# 创建一个Logger实例
logger = logging.getLogger(__name__)

# 输出不同级别的日志
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")

跨模块使用

项目目录如下

my_app/
├── main.py
└── other_module.py

  • main中配置
    # main.py
    
    import logging
    
    def setup_logging():
        # 配置日志格式
        logging.basicConfig(
            level=logging.DEBUG,
            format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
            handlers=[
                logging.FileHandler("/path/to/your/log/directory/app.log"),  # 设置日志文件路径
                logging.StreamHandler()
            ]
        )
    
        # 在这里添加其他处理程序、过滤器等
        
    # 在程序入口调用配置函数
    if __name__ == "__main__":
        setup_logging()
    
        # 导入其他模块并开始运行应用程序逻辑
        import other_module
        other_module.do_something()
    
  • other_module.py
    # other_module.py
    
    import logging
    
    # 在其他模块中,直接导入Logger实例
    logger = logging.getLogger(__name__)
    
    def do_something():
        logger.debug("This is a debug message from other_module")
    
    

参考

https://blog.csdn.net/claroja/article/details/102601920
https://zhuanlan.zhihu.com/p/445411809
https://www.runoob.com/python/att-time-strptime.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python logging 模块Python 标准库中的一个模块,用于记录程序运行时的日志信息。使用 logging 模块可以方便地记录程序的运行状态,以便在出现问题时进行排查。 使用 logging 模块需要先导入模块,然后创建一个 logger 对象,设置日志级别和输出格式,最后在程序中使用 logger 对象记录日志信息。 下面是一个简单的示例代码: ``` import logging # 创建 logger 对象 logger = logging.getLogger('mylogger') # 设置日志级别 logger.setLevel(logging.DEBUG) # 创建一个输出到控制台的 handler console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) # 创建一个输出到文件的 handler file_handler = logging.FileHandler('mylog.log') file_handler.setLevel(logging.INFO) # 设置输出格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console_handler.setFormatter(formatter) file_handler.setFormatter(formatter) # 将 handler 添加到 logger 对象中 logger.addHandler(console_handler) logger.addHandler(file_handler) # 记录日志信息 logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message') ``` 在上面的示例代码中,我们创建了一个名为 `mylogger` 的 logger 对象,并设置了日志级别为 `DEBUG`。然后创建了一个输出到控制台的 handler 和一个输出到文件的 handler,并设置了输出格式。最后将这两个 handler 添加到 logger 对象中。 在程序中使用 logger 对象记录日志信息时,可以使用 `debug()`、`info()`、`warning()`、`error()`、`critical()` 等方法,分别对应不同的日志级别。例如,`logger.debug('debug message')` 就会记录一条 DEBUG 级别的日志信息。 以上就是 Python logging 模块的基本使用方法。 ### 回答2: Pythonlogging模块是一个强大的日志记录工具。它提供了一种灵活的方式来在程序中记录日志,以便在程序运行过程中获取有用的信息和诊断数据。下面是如何使用Python logging模块的基本步骤。 1. 导入logging模块: ```python import logging ``` 2. 配置日志记录器: ```python logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s', filename='app.log', filemode='w') ``` 在配置方法中,level参数设置日志级别,可选项包括DEBUG、INFO、WARNING、ERROR和CRITICAL。format参数定义日志记录的格式,其中asctime表示日志记录的时间,levelname表示日志级别,message表示要记录的消息。filename参数指定日志文件的名称,filemode参数定义日志写入模式,例如'w'表示写入模式,'a'表示追加模式。 3. 记录日志: ```python logging.debug('Debug message') logging.info('Info message') logging.warning('Warning message') logging.error('Error message') logging.critical('Critical message') ``` 使用logging模块中的不同方法来记录不同级别的日志。 4. 进一步配置日志记录器: ```python logger = logging.getLogger('my_logger') logger.setLevel(logging.DEBUG) ``` 如果需要更多的配置选项,可以创建一个logger对象,并使用setLevel方法设置日志级别。 通过这些步骤,可以在程序中使用logging模块记录日志。这样,可以根据需要记录不同级别的日志,并通过指定的格式将日志写入到文件中。日志记录对于程序的调试和问题排查非常有帮助。 ### 回答3: Python中的logging模块是一个内置的日志记录工具。它提供了一种简单而灵活的方式来记录运行时的信息,帮助我们调试程序和追踪错误。下面是使用logging模块的一些主要步骤: 1. 导入logging模块: ```python import logging ``` 2. 设置日志记录的级别: ```python logging.basicConfig(level=logging.DEBUG) ``` 这里设置的是日志记录的最低级别为DEBUG,即记录所有级别的日志信息。还有其他的级别可选择,如:INFO、WARNING、ERROR等,可以根据需要设置。 3. 编写日志信息: ```python logging.debug("This is a debug message") logging.info("This is an info message") logging.warning("This is a warning message") logging.error("This is an error message") ``` 4. 输出日志信息: 日志信息可以输出到控制台、文件或其他地方。默认情况下,日志信息会输出到控制台。 ```python logging.debug("This is a debug message") ``` 可以通过配置logging模块将日志信息输出到文件。 ```python logging.basicConfig(filename='example.log', level=logging.DEBUG) ``` 这里将日志信息输出到文件"example.log"中。 以上是使用logging模块的基本步骤。logging模块还支持更高级的用法,如添加时间戳、设置日志的格式等。可以通过查阅官方文档来了解更多关于logging模块的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值