Aller au contenu

Structure du log

Logfiredispose d'un processeur intégré structlog qui peut être utilisé pour émettre un log Logfire pour chaque événement structlog.

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

Processeur LogfireDoit êtreSitué à Structure du log Avant le dernier processeur dans la configuration qui rend les logs.

Par défaut,LogfireProcessor affiché ci-dessus désactive la journalisation de la console pour logfire, vous pouvez donc utiliser un enregistreur existant configuré pour structlog ou, si vous souhaitez utiliser logfire pour l'enregistrement,LogfireProcessor(console_log=True) .

Attention

Les paramètres de localisation ne sont pas collectés par le processeur en tant qu 'attributs, car ils font déjà partie du message d'événement lorsque le processeur est appelé.

Si vous avez les conditions suivantes:

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

La chaîne 'Fred' n'est pas collectée par le processeur en tant qu 'attribut, elle est simplement formatée avec un message.


本文总阅读量次