python logging 用法


开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件


Python代码

  1. import logging

  2. # 创建一个logger
  3. logger = logging.getLogger('mylogger')
  4. logger.setLevel(logging.DEBUG)

  5. # 创建一个handler,用于写入日志文件
  6. fh = logging.FileHandler('test.log')
  7. fh.setLevel(logging.DEBUG)

  8. # 再创建一个handler,用于输出到控制台
  9. ch = logging.StreamHandler()
  10. ch.setLevel(logging.DEBUG)

  11. # 定义handler的输出格式
  12. formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
  13. fh.setFormatter(formatter)
  14. ch.setFormatter(formatter)

  15. # 给logger添加handler
  16. logger.addHandler(fh)
  17. logger.addHandler(ch)

  18. # 记录一条日志
  19. logger.info('foorbar')  
  20. 基本代码就这样。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python logging 模块是 Python 标准库提供的一个日志记录工具,它可以用来记录应用程序运行时的信息,便于开发人员排查问题和分析程序性能。 使用 Python logging 模块,需要先导入 logging 模块,然后创建一个 logger 对象,通过配置 logger 的不同 handler,可以控制不同级别的日志输出到不同的地方。 下面是一个简单的使用示例: ```python import logging # 创建一个 logger 对象 logger = logging.getLogger(__name__) # 配置 logger 的 handler handler = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) # 设置 logger 的日志级别 logger.setLevel(logging.INFO) # 记录日志 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') ``` 在上面的示例,我们首先创建了一个名为 `__name__` 的 logger 对象,然后配置了一个输出到标准输出的 handler,并设置了日志级别为 `INFO`。接着我们分别记录了不同级别的日志信息,最终输出的日志信息如下: ``` 2021-08-25 16:09:59,757 - __main__ - INFO - This is an info message 2021-08-25 16:09:59,757 - __main__ - WARNING - This is a warning message 2021-08-25 16:09:59,757 - __main__ - ERROR - This is an error message 2021-08-25 16:09:59,757 - __main__ - CRITICAL - This is a critical message ``` 可以看到,只有日志级别大于或等于 `INFO` 的日志信息被输出到了标准输出。如果我们希望将日志信息输出到文件,可以配置一个输出到文件的 handler,如下所示: ```python import logging # 创建一个 logger 对象 logger = logging.getLogger(__name__) # 配置 logger 的 handler handler = logging.FileHandler('example.log', mode='w') formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) # 设置 logger 的日志级别 logger.setLevel(logging.INFO) # 记录日志 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') ``` 在上面的示例,我们将日志信息输出到了名为 `example.log` 的文件。需要注意的是,如果文件不存在,将会被创建,如果文件已存在,将会被覆盖。如果想要追加日志信息而不是覆盖文件,可以将 `mode` 参数设置为 `'a'`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值