コンテンツにスキップ

構造ログ

Logfireには、各structlogイベントのLogfireログを発行するために使用できる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')

Logfireプロセッサは、がstructlog構成でログをレンダリングする最後のプロセッサの前にある必要があります。

デフォルトでは、上記のLogfireProcessor はlogfireのコンソールログを無効にするため、structlog用に構成された既存のロガーを使用できます。logfireを使用してログを記録する場合は、LogfireProcessor(console_log=True) を使用します 。

注意する

ロケーションパラメーターは、プロセッサが呼び出されたときにすでにイベントメッセージの一部であるため、プロセッサによってプロパティとして収集されません。

次の条件がある場合:

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

文字列''Fred''はプロセッサによってプロパティとして収集されず、メッセージを使用してフォーマットされるだけです。


本文总阅读量次