विषय पर बढ़ें

संरचनात्मक लॉग

लॉगफायर एक बिल्ट-इन है संरचना एक हैंडलर जिसका उपयोग प्रत्येक स्ट्रक्टलॉग इवेंट के लिए लॉगफायर लॉग जारी करने के लिए किया जा सकता है।

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

लॉगफायर प्रोसेसरचाहिएमें स्थित है संरचना लॉग रेंडर करने के लिए कॉन्फ़िगरेशन में अंतिम प्रोसेसर से पहले।

डिफ़ॉल्ट रूप से, उपरोक्त प्रदर्शन LogfireProcessor लॉगफायर का कंसोल लॉगिंग अक्षम है, इसलिए आप स्ट्रक्टलॉग के लिए कॉन्फ़िगर किए गए मौजूदा लॉगर का उपयोग कर सकते हैं। यदि आप लॉगिंग के लिए लॉगफायर का उपयोग करना चाहते हैं, तो उपयोग करें LogfireProcessor(console_log=True)...

!!! ध्यान स्थिति मापदंडों को प्रोसेसर द्वारा गुणों के रूप में एकत्र नहीं किया जाता है क्योंकि वे पहले से ही ईवेंट संदेश का हिस्सा होते हैं जब प्रोसेसर को बुलाया जाता है।

यदि आपके पास निम्नलिखित शर्तें हैं:

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

स्ट्रिंग "फ्रेड" प्रोसेसर द्वारा एक विशेषता के रूप में एकत्र नहीं किया गया है, लेकिन संदेश का उपयोग करके स्वरूपित किया गया है।

本文总阅读量次