Erlang 21

logger_disk_log_h




erlang

logger_disk_log_h

मॉड्यूल

logger_disk_log_h

मॉड्यूल सारांश

Logger के लिए एक disk_log आधारित हैंडलर

विवरण

यह लॉगर के लिए एक हैंडलर है जो disk_log का उपयोग करके परिपत्र (लिपटे) लॉग प्रदान करता है। इस हैंडलर के कई उदाहरणों को लकड़हारा में जोड़ा जा सकता है, और प्रत्येक उदाहरण अपनी डिस्क लॉग फ़ाइल में प्रिंट करता है, हैंडलर कॉन्फ़िगरेशन में निर्दिष्ट नाम और सेटिंग्स के साथ बनाया जाता है।

डिफ़ॉल्ट मानक हैंडलर, logger_std_h , कर्नेल एप्लिकेशन के स्टार्टअप पर एक disk_log हैंडलर द्वारा प्रतिस्थापित किया जा सकता है। इसका एक उदाहरण नीचे देखें।

हैंडलर में एक अधिभार सुरक्षा तंत्र होता है जो लॉग इवेंट्स के उच्च भार के दौरान हैंडलर प्रक्रिया और कर्नेल एप्लिकेशन को जीवित रखता है। ओवरलोड सुरक्षा कैसे काम करती है, और इसे कैसे कॉन्फ़िगर किया जाए, यह User's Guide में वर्णित है।

डिस्क_लॉग हैंडलर का एक नया उदाहरण जोड़ने के लिए, लकड़हारे का उपयोग करें logger:add_handler/3 । हैंडलर कॉन्फ़िगरेशन तर्क एक मानचित्र है जिसमें सामान्य कॉन्फ़िगरेशन पैरामीटर हो सकते हैं, जैसा कि User's Guide , और हैंडलर विशिष्ट पैरामीटर। विशिष्ट डेटा को कुंजी config साथ एक उप मानचित्र में संग्रहीत किया जाता है, और इसमें निम्नलिखित पैरामीटर हो सकते हैं:

file

यह डिस्क लॉग फ़ाइल का पूरा नाम है। विकल्प dlog_option() डेटाटाइप में name गुण से मेल खाता है।

type

यह डिस्क लॉग प्रकार, wrap या halt । विकल्प dlog_option() डेटाटाइप में type प्रॉपर्टी से मेल खाता है।

wrap चूक।

max_no_files

यह उन फ़ाइलों की अधिकतम संख्या है, जिनका डिस्क_लॉग अपने सर्कुलर लॉगिंग के लिए उपयोग करता है। विकल्प dlog_option() डेटाटाइप में size गुण में MaxNoFiles तत्व से मेल खाता है।

10 चूक।

हॉल्ट लॉग पर सेटिंग का कोई प्रभाव नहीं है।

max_no_bytes

यह बाइट्स की अधिकतम संख्या है जो कि अगली फ़ाइल के साथ disk_log के आगे बढ़ने के लिए लॉग फाइल पर लिखी जाती है, या पूर्ण विराम लॉग के मामले में एक त्रुटि उत्पन्न करती है। विकल्प dlog_option() डेटाटाइप में size गुण में MaxNoBytes तत्व से मेल खाता है।

एक रैप लॉग के लिए 1048576 बाइट्स के लिए डिफ़ॉल्ट, और एक हॉल्ट लॉग के लिए infinity

filesync_repeat_interval

मिलीसेकंड में यह मान निर्दिष्ट करता है कि कितनी बार हैंडलर डिस्क पर बफर डेटा लिखने के लिए डिस्क_लॉग सिंक ऑपरेशन करता है। हैंडलर बार-बार ऑपरेशन का प्रयास करता है, लेकिन केवल एक नया सिंक करता है यदि वास्तव में कुछ लॉग किया गया है।

5000 मिलीसेकंड तक की कमी।

यदि no_repeat को मान के रूप में सेट किया जाता है, तो दोहराया सिंक ऑपरेशन अक्षम है। उपयोगकर्ता एक disk_log समन्वयन करने के लिए filesync/1 फ़ंक्शन को भी कॉल कर सकता है।

अन्य कॉन्फ़िगरेशन पैरामीटर मौजूद हैं, जो अधिभार संरक्षण व्यवहार को अनुकूलित करने के लिए उपयोग किया जाना है। समान मापदंडों का उपयोग मानक हैंडलर और डिस्क_लॉग हैंडलर दोनों में किया जाता है, और उन्हें User's Guide में प्रलेखित किया जाता है।

ध्यान दें कि रनटाइम में हैंडलर का कॉन्फ़िगरेशन बदलते समय, disk_log विकल्प ( file , type , max_no_files , max_no_bytes ) को संशोधित नहीं किया जाना चाहिए।

Disk_log हैंडलर जोड़ने का उदाहरण:

logger:add_handler(my_disk_log_h, logger_disk_log_h,
                   #{config => #{file => "./my_disk_log",
                                 type => wrap,
                                 max_no_files => 4,
                                 max_no_bytes => 10000},
                                 filesync_repeat_interval => 1000}}).

Erlang नोड शुरू करते समय डिफ़ॉल्ट मानक हैंडलर के बजाय disk_log हैंडलर का उपयोग करने के लिए, logger_disk_log_h का उपयोग करने के लिए कर्नेल डिफ़ॉल्ट लॉगर logger_disk_log_h । उदाहरण:

erl -kernel logger '[{handler,default,logger_disk_log_h,
                      #{config => #{file => "./system_disk_log"}}}]'

निर्यात

filesync (नाम) -> ठीक | {त्रुटि, कारण}

प्रकार

बफ़र्ड डेटा को डिस्क पर लिखें।

यह भी देखें

logger_std_h , disk_log , disk_log