Python中二次封装loguru怎样将日志实时打印到控制台上
时间: 2024-02-18 07:06:06 浏览: 30
二次封装 loguru 的方式可以更方便地使用 loguru 模块,同时也可以根据自己的需求自定义日志的格式、级别等信息。
下面是一个示例,将 loguru 封装成一个名为 `MyLogger` 的类,用于输出日志信息:
```python
from loguru import logger
import sys
class MyLogger:
def __init__(self, log_path):
# 配置日志文件处理器
logger.add(log_path, rotation="10 MB", retention="5 days", level="INFO", encoding="utf-8")
# 配置控制台处理器
logger.add(sys.stdout, colorize=True, format="<level>{level} {message}</level>")
def info(self, message):
logger.info(message)
def debug(self, message):
logger.debug(message)
def warning(self, message):
logger.warning(message)
def error(self, message):
logger.error(message)
def exception(self, message):
logger.exception(message)
```
以上代码定义了一个名为 `MyLogger` 的类,它封装了 loguru 模块,用于输出日志信息。在 `__init__()` 方法中,配置了两个处理器,一个用于输出到日志文件,一个用于实时输出到控制台。其中,`log_path` 参数指定了日志文件的路径,`rotation` 和 `retention` 参数用于配置日志文件的大小和保留时间,`level` 参数指定了日志级别,`encoding` 参数指定了日志文件的编码方式。`sys.stdout` 表示输出到标准输出流,`colorize=True` 表示控制台输出的日志信息带有颜色,`format` 参数用于自定义日志信息的格式。
在类中定义了几个方法,分别用于输出不同级别的日志信息。这些方法内部直接调用 loguru 的对应方法即可。
使用时,可以先创建一个 `MyLogger` 对象,然后调用其方法输出日志信息:
```python
logger = MyLogger("app.log")
logger.info("This is an info message")
logger.debug("This is a debug message")
logger.warning("This is a warning message")
logger.error("This is an error message")
```
这样,日志信息就会实时输出到控制台上,并且同时写入到日志文件中。