首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Loguru:不总是设置的额外变量

Loguru:不总是设置的额外变量
EN

Stack Overflow用户
提问于 2022-03-03 09:12:33
回答 1查看 477关注 0票数 2

我想在日志中添加一个额外的变量,但前提是这个变量是存在/设置的。

以下是我想出的解决方案:

代码语言:javascript
复制
import sys
from loguru import logger

def formatter(record):
    if "remote_ip" in record.get("extra", []):
        return "{time} | {level} | {extra[remote_ip]} | {message}\n"
    else:
        return "{time} | {level} | unset | {message}\n"

logger.remove(0)
logger.add(sys.stderr, format=formatter)

logger.bind(remote_ip="192.168.1.1").info("Request from client1")
logger.info("Internal message without remote_ip")
logger.bind(remote_ip="192.168.1.2").info("Request from client2")

这是正确的方法,还是有更好的方法?

我不喜欢这个解决方案的一件事是,我不能轻易地将日志格式从代码中移出到一个配置文件中。

我更喜欢像{extra.get(remote_ip, 'unset')}这样的东西,但这似乎是不可能的(或者至少我还没有找到一种方法)。

EN

回答 1

Stack Overflow用户

发布于 2022-03-05 11:09:00

我想出了一个(可能?)更好的解决方案。只需为已经设置的"remote_ip“创建一个默认值的新记录器实例:

代码语言:javascript
复制
import sys
from loguru import logger

logger.remove(0)
logger.add(sys.stderr, format="{time} | {level} | {extra[remote_ip]} | {message}")

mylogger = logger.bind(remote_ip="unset")

mylogger.bind(remote_ip="192.168.1.1").info("Request from client1")
mylogger.info("Internal message without remote_ip")
mylogger.bind(remote_ip="192.168.1.2").info("Request from client2")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71334611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档