loguru中使用logger.contextualize 和 extra的区别
时间: 2024-02-09 08:13:07 浏览: 28
在Loguru中,logger.contextualize和extra都可以用于向日志记录中添加额外的信息,但它们的作用略有不同。
logger.contextualize可以用于对Logger对象进行上下文化处理,从而将某些信息添加到所有该Logger实例产生的日志记录中。例如,以下代码将在所有loguru日志记录中添加"module"和"function"信息:
```
from loguru import logger
logger = logger.contextualize(module=__name__, function="main")
logger.info("Hello, world!")
# 输出:2021-08-20 15:30:00.000 | INFO | __main__:<module>:6 - Hello, world!
```
可以看到,"module"和"function"信息被自动添加到日志记录中。
而extra则是在每次调用logger时,手动添加一些额外的信息。例如,以下代码将在某个特定的loguru日志记录中添加"username"和"ip_address"信息:
```
from loguru import logger
def login(username, ip_address):
logger.info("User logged in", extra={"username": username, "ip_address": ip_address})
login("user123", "192.168.1.1")
# 输出:2021-08-20 15:30:00.000 | INFO | __main__:<module>:6 - User logged in, username=user123, ip_address=192.168.1.1
```
可以看到,在调用logger.info时,我们手动添加了"username"和"ip_address"信息,这些信息会被添加到该条日志记录中。
综上所述,logger.contextualize和extra都可以用于添加额外信息,但它们的作用略有不同:logger.contextualize是对Logger对象进行上下文化处理,从而将某些信息添加到所有该Logger实例产生的日志记录中,而extra则是在每次调用logger时,手动添加一些额外的信息。