structureel logboek¶
DeLogfireheeft een ingebouwde structlog-processor die kan worden gebruikt om Logfire-logboeken uit te geven voor elke structlog-gebeurtenis.
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.
本文总阅读量次