Ga naar inhoud

structureel logboek

DeLogfireheeft een ingebouwde structlog-processor die kan worden gebruikt om Logfire-logboeken uit te geven voor elke structlog-gebeurtenis.

main.py
from dataclasses import dataclass

import structlog
import logfire

logfire.configure()

structlog.configure(
    processors=[
        structlog.contextvars.merge_contextvars,
        structlog.processors.add_log_level,
        structlog.processors.StackInfoRenderer(),
        structlog.dev.set_exc_info,
        structlog.processors.TimeStamper(fmt='%Y-%m-%d %H:%M:%S', utc=False),
        logfire.StructlogProcessor(),
        structlog.dev.ConsoleRenderer(),
    ],
)
logger = structlog.get_logger()


@dataclass
class User:
    id: int
    name: str


logger.info('Login', user=User(id=42, name='Fred'))
#> 2024-03-22 12:57:33 [info     ] Login                          user=User(id=42, name='Fred')

Logfire-processormoet welgevestigd in structlog Vóór de laatste processor in de configuratie om logboeken weer te geven.

Standaard wordt de bovenstaande weergave LogfireProcessor Logfire 's console logging is uitgeschakeld, dus je kunt een bestaande logger gebruiken die is geconfigureerd voor structlog. Als je logfire wilt gebruiken voor logging, gebruik dan LogfireProcessor(console_log=True)...

Aandacht

Positieparameters worden door de processor niet als eigenschappen verzameld omdat ze al deel uitmaken van het gebeurtenisbericht wanneer de processor wordt aangeroepen.

Als u de volgende voorwaarden heeft:

logger.error('Hello %s!', 'Fred')
#> 2024-03-22 13:39:26 [error    ] Hello Fred!

De string "Fred" wordt niet verzameld als attribuut door de processor, maar wordt opgemaakt met behulp van het bericht.


本文总阅读量次