Lewati ke isi

log struktural

Logfire Ada built-in log struktur Handler yang dapat digunakan untuk mengeluarkan log Logfire untuk setiap event 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')

Prosesor logikaharusberlokasi di log struktur Sebelum prosesor terakhir dalam konfigurasi untuk merender log.

Secara default,LogfireProcessor yang ditunjukkan di atas menonaktifkan konsol logging untuk logfire, sehingga Anda dapat menggunakan logger yang ada yang dikonfigurasi untuk structlog, jika Anda ingin menggunakan logfire untuk log, gunakan LogfireProcessor(console_log=True) ...

Perhatian

Parameter posisi tidak dikumpulkan sebagai properti oleh prosesor karena sudah menjadi bagian dari pesan acara saat prosesor dipanggil.

Jika Anda memiliki kondisi berikut:

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

String "Fred" tidak dikumpulkan sebagai atribut oleh prosesor, tetapi diformat menggunakan pesan.


本文总阅读量次