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