簡體   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