繁体   English   中英

Loguru:并非总是设置的额外变量

[英]Loguru: extra variable that's not always set

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

这是我想出的解决方案:

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')}类的东西,但这似乎不可能(或者至少我还没有找到一种方法来做到这一点)。

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

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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM