Structure du log¶
Logfiredispose d'un processeur intégré structlog qui peut être utilisé pour émettre un log Logfire pour chaque événement structlog.
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.
本文总阅读量次