我想在日志中添加一个额外的变量,但前提是这个变量是存在/设置的。
以下是我想出的解决方案:
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')}这样的东西,但这似乎是不可能的(或者至少我还没有找到一种方法)。
发布于 2022-03-05 11:09:00
我想出了一个(可能?)更好的解决方案。只需为已经设置的"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")https://stackoverflow.com/questions/71334611
复制相似问题