• Python
  • loguru第三方库的使用/日志输出

loguru 是 Python 中一个非常简洁、功能强大的日志库,它提供了便捷的日志记录方式。以下是一些常见的 loguru 使用示例:

1. 安装 loguru

pip install loguru

2. 基本使用示例

loguru 不需要进行复杂的配置,直接使用即可。

from loguru import logger

# 简单的日志输出
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.")

3. 输出到文件

可以将日志输出到文件中。

from loguru import logger

# 输出日志到文件,保留最多10个文件,单个文件大小不超过1 MB
logger.add("file.log", rotation="1 MB", retention="10 days")

logger.info("This log will be written to file.")

4. 设置日志格式

自定义日志的输出格式。

from loguru import logger

logger.add("formatted.log", format="{time} {level} {message}")

logger.info("This is a formatted log message.")

5. 异步日志记录

loguru 支持异步日志记录。

from loguru import logger
import asyncio

logger.add("async_log.log", enqueue=True)  # 使用 enqueue 参数支持异步

async def main():
    logger.info("Start async logging.")
    await asyncio.sleep(1)
    logger.info("End async logging.")

asyncio.run(main())

6. 过滤特定级别的日志

可以通过过滤器,只输出特定级别的日志。

from loguru import logger

# 只记录 INFO 级别以上的日志
logger.add("filtered.log", level="INFO")

logger.debug("This debug message will not be logged.")
logger.info("This info message will be logged.")

7. 捕获异常

loguru 可以方便地捕获并记录异常信息。

from loguru import logger

try:
    1 / 0
except ZeroDivisionError:
    logger.exception("An error occurred:")

8. 动态设置日志级别

可以在运行时动态设置日志级别。

from loguru import logger

logger.add("dynamic.log", level="WARNING")

logger.info("This will not be logged.")
logger.warning("This will be logged.")
logger.level("INFO")  # 动态将日志级别设置为 INFO
logger.info("Now this will be logged.")

9. 将日志转发到其他地方

可以将日志转发到其他的日志处理器(如标准输出、文件、HTTP API等)。

from loguru import logger
import sys

# 同时将日志输出到标准输出和文件
logger.add(sys.stdout, format="{time} {level} {message}")
logger.add("output.log", format="{time} {level} {message}")

logger.info("This will be logged to both stdout and file.")

10. 日志文件的压缩

可以让 loguru 自动压缩日志文件。

from loguru import logger

# 日志文件在达到10MB时自动压缩
logger.add("compressed.log", rotation="10 MB", compression="zip")

for i in range(10000):
    logger.info(f"Logging message number {i}.")

总结

loguru 提供了丰富的功能,并且非常易于使用和配置。以上是一些常见的使用场景和操作方法,具体可以根据项目需求进行定制。