मुझे एक बहुत ही विशिष्ट प्रारूप में फाइल करने के लिए सेरिलोग जेसन आउटपुट को प्रारूपित करने की आवश्यकता है। मैंने आउटपुट टेम्पलेट के साथ गड़बड़ कर दी है लेकिन मुझे कुछ आसान याद आना चाहिए। आउटपुट का एक उदाहरण है:

{ 
    "event.action": "Save",
    "custom.vulnerability": "Save PII",
    "event.action":"Insert",
    "event.module":"Person",
    "message":"Inserted person object by Bob",
    "event.outcome":"Success",
    "host.ip":"192.168.0.0",
    etc...
}

क्या किसी के पास इस प्रारूप को प्राप्त करने के बारे में कोई सुझाव है? मेरे पास इन गुणों में से कई को पॉप्युलेट करने के लिए समृद्ध है लेकिन वांछित आउटपुट प्रारूप का उत्पादन करना मेरा मुद्दा है। धन्यवाद, डोंटा

1
Donta Dalpoas 11 फरवरी 2021, 03:54
अपना स्वयं का सिंक बनाने के लिए उपयोग का मामला हो सकता है जहां आपके पास सीधे प्रोग्रामेटिक नियंत्रण होता है
 – 
TheGeneral
11 फरवरी 2021, 03:56
nblumhardt.com/2020/10/programmable-serilog-formatting दिखाता है कि कैसे इसके लिए Serilog.Expressions का उपयोग किया जा सकता है, और ग्राहक प्रारूप मार्ग लेने से बहुत तेज़ होना चाहिए (यदि आपको इंडेंट JSON आउटपुट की आवश्यकता नहीं है :-))
 – 
Nicholas Blumhardt
12 फरवरी 2021, 02:48

1 उत्तर

सबसे बढ़िया उत्तर

JSON आउटपुट के प्रारूप को नियंत्रित करने के लिए आपको एक कस्टम ITextFormatter (जहाँ आप तय करते हैं कि JSON को कैसे प्रारूपित किया जाए), और इसे सिंक (ओं) को प्रदान करें जो लॉग उत्सर्जित कर रहे हैं।

Log.Logger = new LoggerConfiguration()
  .WriteTo.File(new YourCustomJsonFormatter(), "./logs/myapp.json")
  .CreateLogger();

आप Serilog.Formatting के सोर्स कोड में कस्टम ITextFormatter के कार्यान्वयन का उदाहरण देख सकते हैं .कॉम्पैक्ट.

3
C. Augusto Proiete 11 फरवरी 2021, 04:26
मैंने एक कस्टम फॉर्मेटर लागू किया और यह पूरी तरह से काम किया। सुझावों के लिए धन्यवाद!
 – 
Donta Dalpoas
12 फरवरी 2021, 01:18