一、简介

loguru和logging都是Python中的日志库,用于记录和输出应用程序的运行日志。


  • logging是python标准库中自带的模块,可以在Python标准库中直接使用。

  • loguru则不是,需要使用pip或conda等包管理工具安装。

    pip install loguru
    

二、优缺点

📝logging

❤️优点

  1. 丰富的API和功能,可以通过定制不同的记录器、处理器、过滤器和格式化器实现复杂的日志记录和输出;
  2. 支持多线程和多进程应用程序的日志输出;
  3. 可以对日志进行分割和归档,方便后期的查找和分析;
  4. 在性能方面表现较优。
  5. 可以通过配置文件进行日志记录器的配置,方便维护和管理;
  6. 可以与其他Python库集成,如Django等;
  7. 具有很好的文档和社区支持。

💔缺点

  1. 在初学者使用上可能比较复杂,需要进行一些配置和定制;
  2. 需要在代码中显式地调用API,代码可读性可能会受到影响。
  3. 在多进程应用程序中,可能出现日志丢失或重复记录的问题;
  4. 一些功能需要进行额外的工作,如分割和归档等;
  5. 使用复杂,可能会出现一些难以调试的问题。

📝loguru

❤️优点

  1. 简单易用,无需复杂的配置和定制即可实现基本的日志记录和输出;
  2. 提供了更加灵活的日志格式和上下文信息输出;
  3. 支持对异常信息的记录和输出,便于问题的排查和调试;
  4. 能够通过装饰器语法在函数或类上直接添加日志记录功能。
  5. 支持异步日志记录,能够极大地提升日志记录的性能;
  6. 支持跨进程、跨线程的日志记录;
  7. 支持颜色输出和文件行号输出;
  8. 与logging兼容,可以方便地将现有的logging代码迁移到loguru。

💔缺点

  1. 功能相对简单,无法满足复杂应用程序的日志记录需求;
  2. 在性能方面可能不如logging。
  3. 对于需要细粒度控制的日志记录,可能需要一些定制和配置;
  4. 对于一些历史悠久的Python项目,可能已经大量使用了logging,转换到loguru需要一些工作量。

三、使用示例

⭐️logging⭐️

import logging

# 创建Logger对象
logger = logging.getLogger(__name__)
# 设置标准日志等级
logger.setLevel(logging.DEBUG)

# 创建FileHandler对象,将日志写入文件
file_handler = logging.FileHandler('test.log', mode='w')
# 设置文件中写入的日志等级
file_handler.setLevel(logging.DEBUG)

# 创建StreamHandler对象,将日志输出到控制台
stream_handler = logging.StreamHandler()
# 设置控制台显示的日志等级
stream_handler.setLevel(logging.DEBUG)

# 设置日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
stream_handler.setFormatter(formatter)

# 将处理器添加到Logger对象中(注册)
logger.addHandler(file_handler)
logger.addHandler(stream_handler)

# 记录日志信息
logger.debug('Debug message')
logger.info('Info message')
logger.warning('Warning message')
logger.error('Error message')
logger.critical('Critical message')

⭐️loguru⭐️

from loguru import logger

# 设置日志输出格式
logger.add('test.log', rotation='100 MB', format='{time} - {level} - {message}')

# 记录日志信息
logger.debug('Debug message')
logger.info('Info message')
logger.warning('Warning message')
logger.error('Error message')
logger.critical('Critical message')

四、总结

综上所述,基于项目大小和模式选择略有不同,不过一般还是比较推荐使用loguru。毕竟在多进程下丢失日志真的让人无法接受,况且loguru使用还那么的方便。



🎉如果对你有所帮助,可以点赞、关注、收藏起来,不然下次就找不到了🎉


【点赞】⭐️⭐️⭐️⭐️⭐️
【关注】⭐️⭐️⭐️⭐️⭐️
【收藏】⭐️⭐️⭐️⭐️⭐️

Thanks for watching.
Kenny

03-28 19:51