Журнал конструкции¶
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 LogfireProcessor , показанный выше, отключает журнал консоли logfire, поэтому вы можете использовать существующий регистратор, настроенный для structlog, или LogfireProcessor(console_log=True) .
!!! Внимание! Параметры местоположения не собираются процессором в качестве свойств, так как при вызове процессора они уже являются частью сообщения о событиях.
Если у вас есть следующие условия:
```py
logger.error('Hello %s!', 'Fred')
#> 2024-03-22 13:39:26 [error ] Hello Fred!
```
Строка ''Fred'не собирается процессором в качестве свойства, она просто форматируется с помощью сообщений.
本文总阅读量次