Erlang 21

error_logger




erlang

error_logger

मॉड्यूल

error_logger

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

त्रुटि त्रुटि लकड़हारा।

विवरण

ध्यान दें

Erlang / OTP 21.0 में, लॉगिंग के लिए एक नया एपीआई जोड़ा गया था। पुराने error_logger मॉड्यूल का उपयोग अभी भी विरासत कोड द्वारा किया जा सकता है, लेकिन लॉग इवेंट नए लकड़हारा API पर पुनर्निर्देशित किए जाते हैं। नए कोड को सीधे लकड़हारा एपीआई का उपयोग करना चाहिए।

error_logger को अब डिफ़ॉल्ट रूप से शुरू नहीं किया गया है, लेकिन जब एक इवेंट हैंडलर को error_logger:add_report_handler/1,2 साथ जोड़ा जाता है, तो स्वचालित रूप से प्रारंभ हो जाता है। error_logger मॉड्यूल को तब नए error_logger हैंडलर के रूप में भी जोड़ा जाता है।

अधिक जानकारी के लिए उपयोगकर्ता गाइड में logger(3) और Logging अध्याय देखें।

Erlang त्रुटि लकड़हारा एक इवेंट मैनेजर है (देखें OTP Design Principles और gen_event(3) ), error_logger रूप में पंजीकृत है।

त्रुटि लकड़हारा अब डिफ़ॉल्ट रूप से शुरू नहीं होता है, लेकिन जब एक इवेंट हैंडलर add_report_handler/1,2 साथ जोड़ा जाता है, तो स्वचालित रूप से शुरू हो जाता है। error_logger मॉड्यूल को तब नए error_logger एक हैंडलर के रूप में भी जोड़ा जाता है, जिससे लॉग इवेंट्स को error_logger से त्रुटि लकड़हारा के रूप में अग्रेषित किया जा सकता है, और परिणामस्वरूप सभी स्थापित त्रुटि लकड़हारा ईवेंट हैंडलर।

उपयोगकर्ता-विशिष्ट ईवेंट हैंडलर अनुप्रयोग-विशिष्ट ईवेंट को संभालने के लिए जोड़ा जा सकता है।

एसटीडीएलआईबी और एसएएसएल द्वारा उपलब्ध कराए गए मौजूदा हैंडलर अभी भी उपलब्ध हैं, लेकिन अब ओटीपी का उपयोग नहीं किया जाता है।

चेतावनी की घटनाओं को एरलांग / ओटीपी आर 9 सी में पेश किया गया था और यह डिफ़ॉल्ट रूप से एर्लांग / ओटीपी 18.0 से सक्षम हैं। मौजूदा उपयोगकर्ता-निर्धारित ईवेंट हैंडलर के साथ पीछे की संगतता बनाए रखने के लिए, चेतावनी ईवेंट्स को कमांड-लाइन फ्लैग +W <e | i | w> का उपयोग करके errors या info रूप में टैग किया जा सकता है +W <e | i | w> +W <e | i | w> +W <e | i | w> , इस प्रकार लॉग में ERROR REPORT या INFO REPORT में दिखाई दे रहा है।

जानकारी का प्रकार

report() =
[{Tag :: term(), Data :: term()} | term()] | string() | term()

निर्यात

add_report_handler (हैंडलर) -> कोई भी ()
add_report_handler (हैंडलर, आर्ग्स) -> परिणाम

प्रकार

त्रुटि लकड़हारे के लिए एक नया ईवेंट हैंडलर जोड़ता है। इवेंट हैंडलर को gen_event कॉलबैक मॉड्यूल के रूप में लागू किया जाना चाहिए, gen_event(3)

Handler आमतौर पर कॉलबैक मॉड्यूल का नाम है और Args एक वैकल्पिक शब्द है ( Args टू []) जो कि इनिशियलाइज़ेशन कॉलबैक फंक्शन Handler:init/1 । यदि सफल रहा तो फ़ंक्शन ok

इवेंट हैंडलर को इस मॉड्यूल में ईवेंट को हैंडल करने में सक्षम होना चाहिए, अनुभाग Events देखें।

पहली बार इस फ़ंक्शन को कॉल किया जाता है, error_logger को लॉगर हैंडलर के रूप में जोड़ा जाता है, और error_logger प्रक्रिया शुरू की जाती है।

delete_report_handler (हैंडलर) -> परिणाम

प्रकार

एक त्रुटि हैंडलर से gen_event:delete_handler(error_logger, Handler, []) को कॉल करके इवेंट हैंडलर gen_event:delete_handler(error_logger, Handler, []) , gen_event(3)

यदि हटाने के बाद कोई और ईवेंट हैंडलर मौजूद नहीं है, तो error_logger को लॉगर हैंडलर के रूप में हटा दिया जाता है, और error_logger प्रक्रिया को रोक दिया जाता है।

error_msg (प्रारूप) -> ठीक है
error_msg (प्रारूप, डेटा) -> ठीक है
प्रारूप (प्रारूप, डेटा) -> ठीक है

प्रकार

मानक त्रुटि ईवेंट लॉग करें। Format और Data तर्क io:format/2 के तर्क के समान हैं io:format/2 STDLIB में io:format/2

त्रुटि लकड़हारा घटना के लिए लकड़हारा, मेटाडेटा सहित कि विरासत त्रुटि लकड़हारा घटना संचालकों के साथ पीछे संगतता की अनुमति देता है।

ईवेंट को डिफ़ॉल्ट लकड़हारा हैंडलर द्वारा नियंत्रित किया जाता है।

इन कार्यों को पीछे की संगतता के लिए रखा जाता है और नए कोड द्वारा उपयोग नहीं किया जाना चाहिए। इसके बजाय ?LOG_ERROR मैक्रो या logger:error/1,2,3 उपयोग करें।

उदाहरण:

1> error_logger:error_msg("An error occurred in ~p", [a_module]).
=ERROR REPORT==== 22-May-2018::11:18:43.376917 ===
An error occurred in a_module
ok
चेतावनी

यदि यूनिकोड अनुवाद संशोधक ( t ) का उपयोग प्रारूप स्ट्रिंग में किया जाता है, तो सभी घटना संचालकों को यह सुनिश्चित करना होगा कि स्वरूपित आउटपुट I / O डिवाइस के लिए सही ढंग से एन्कोडेड है।

error_report (रिपोर्ट) -> ठीक है

प्रकार

मानक त्रुटि ईवेंट लॉग करें। त्रुटि लकड़हारा घटना के लिए लकड़हारा, मेटाडेटा सहित कि विरासत त्रुटि लकड़हारा घटना संचालकों के साथ पीछे संगतता की अनुमति देता है।

ईवेंट को डिफ़ॉल्ट लकड़हारा हैंडलर द्वारा नियंत्रित किया जाता है।

यह कार्य पीछे की संगतता के लिए रखा गया है और नए कोड द्वारा उपयोग नहीं किया जाना चाहिए। इसके बजाय ?LOG_ERROR मैक्रो या logger:error/1,2,3 उपयोग करें।

उदाहरण:

2> error_logger:error_report([{tag1,data1},a_term,{tag2,data}]).
=ERROR REPORT==== 22-May-2018::11:24:23.699306 ===
    tag1: data1
    a_term
    tag2: data
ok
3> error_logger:error_report("Serious error in my module").
=ERROR REPORT==== 22-May-2018::11:24:45.972445 ===
Serious error in my module
ok
error_report (प्रकार, रिपोर्ट) -> ठीक है

प्रकार

उपयोगकर्ता द्वारा परिभाषित त्रुटि ईवेंट लॉग करें। त्रुटि लकड़हारा घटना के लिए लकड़हारा, मेटाडेटा सहित कि विरासत त्रुटि लकड़हारा घटना संचालकों के साथ पीछे संगतता की अनुमति देता है।

त्रुटि लकड़हारा भी इस घटना के मेटाडेटा के लिए मान [Type] साथ एक domain फ़ील्ड जोड़ता है, जिससे डिफ़ॉल्ट लकड़हारा हैंडलर के फ़िल्टर घटना को छोड़ देते हैं। एक अलग लकड़हारा हैंडलर, या एक त्रुटि लकड़हारा घटना हैंडलर, इस घटना को संभालने के लिए जोड़ा जाना चाहिए।

यह अनुशंसा की जाती है कि Report error_report/1 के समान संरचना का अनुसरण करे।

यह कार्य पीछे की संगतता के लिए रखा गया है और नए कोड द्वारा उपयोग नहीं किया जाना चाहिए। इसके बजाय ?LOG_ERROR मैक्रो या logger:error/1,2,3 उपयोग करें।

get_format_depth () -> असीमित | पूर्णांक ()> = 1

रिटर्न max(10, Depth) , जहां Depth कर्नेल अनुप्रयोग में error_logger_format_depth का मान है, अगर गहराई एक पूर्णांक है। अन्यथा, unlimited वापस आ गया है

ध्यान दें

Erlang / OTP 21.0 में logger(3) पेश किए जाने के बाद error_logger_format_depth चर को deprecated गया है। चर, और इस फ़ंक्शन को पीछे की संगतता के लिए रखा जाता है क्योंकि वे अभी भी विरासत रिपोर्ट हैंडलर द्वारा उपयोग किए जा सकते हैं।

info_msg (प्रारूप) -> ठीक है
info_msg (प्रारूप, डेटा) -> ठीक है

प्रकार

मानक जानकारी ईवेंट लॉग करें। Format और Data तर्क io:format/2 के तर्क के समान हैं io:format/2 STDLIB में io:format/2

त्रुटि लकड़हारा घटना के लिए लकड़हारा, मेटाडेटा सहित कि विरासत त्रुटि लकड़हारा घटना संचालकों के साथ पीछे संगतता की अनुमति देता है।

ईवेंट को डिफ़ॉल्ट लकड़हारा हैंडलर द्वारा नियंत्रित किया जाता है।

इन कार्यों को पीछे की संगतता के लिए रखा जाता है और नए कोड द्वारा उपयोग नहीं किया जाना चाहिए। इसके बजाय ?LOG_ERROR मैक्रो या logger:info/1,2,3 उपयोग करें logger:info/1,2,3 बजाय।

उदाहरण:

1> error_logger:info_msg("Something happened in ~p", [a_module]).
=INFO REPORT==== 22-May-2018::12:03:32.612462 ===
Something happened in a_module
ok
चेतावनी

यदि यूनिकोड अनुवाद संशोधक ( t ) का उपयोग प्रारूप स्ट्रिंग में किया जाता है, तो सभी घटना संचालकों को यह सुनिश्चित करना होगा कि स्वरूपित आउटपुट I / O डिवाइस के लिए सही ढंग से एन्कोडेड है।

info_report (रिपोर्ट) -> ठीक है

प्रकार

मानक जानकारी ईवेंट लॉग करें। त्रुटि लकड़हारा घटना के लिए लकड़हारा, मेटाडेटा सहित कि विरासत त्रुटि लकड़हारा घटना संचालकों के साथ पीछे संगतता की अनुमति देता है।

ईवेंट को डिफ़ॉल्ट लकड़हारा हैंडलर द्वारा नियंत्रित किया जाता है।

यह कार्य पीछे की संगतता के लिए रखा गया है और नए कोड द्वारा उपयोग नहीं किया जाना चाहिए। इसके बजाय ?LOG_ERROR मैक्रो या logger:info/1,2,3 उपयोग करें logger:info/1,2,3 बजाय।

उदाहरण:

2> error_logger:info_report([{tag1,data1},a_term,{tag2,data}]).
=INFO REPORT==== 22-May-2018::12:06:35.994440 ===
    tag1: data1
    a_term
    tag2: data
ok
3> error_logger:info_report("Something strange happened").
=INFO REPORT==== 22-May-2018::12:06:49.066872 ===
Something strange happened
ok
info_report (प्रकार, रिपोर्ट) -> ठीक है

प्रकार

उपयोगकर्ता द्वारा परिभाषित सूचना ईवेंट लॉग करें। त्रुटि लकड़हारा घटना के लिए लकड़हारा, मेटाडेटा सहित कि विरासत त्रुटि लकड़हारा घटना संचालकों के साथ पीछे संगतता की अनुमति देता है।

त्रुटि लकड़हारा भी इस घटना के मेटाडेटा के लिए मान [Type] साथ एक domain फ़ील्ड जोड़ता है, जिससे डिफ़ॉल्ट लकड़हारा हैंडलर के फ़िल्टर घटना को छोड़ देते हैं। एक अलग लकड़हारा हैंडलर, या एक त्रुटि लकड़हारा घटना हैंडलर, इस घटना को संभालने के लिए जोड़ा जाना चाहिए।

यह अनुशंसा की जाती है कि Report info_report/1 के समान संरचना का अनुसरण करे।

यह कार्य पीछे की संगतता के लिए रखा गया है और नए कोड द्वारा उपयोग नहीं किया जाना चाहिए। इसके बजाय ?LOG_ERROR मैक्रो या logger:info/1,2,3 उपयोग करें logger:info/1,2,3 बजाय।

logfile (अनुरोध :: {खुला, फ़ाइल नाम}) -> ठीक | {त्रुटि, OpenReason}
logfile (अनुरोध :: पास) -> ठीक है | {त्रुटि, CloseReason}
logfile (अनुरोध :: फ़ाइल नाम) -> फ़ाइल नाम | {त्रुटि, फाइलनामेनसन}

प्रकार

मानक ईवेंट का प्रिंटआउट किसी फ़ाइल में सक्षम या अक्षम करता है।

यह error_logger_file_h ईवेंट हैंडलर को जोड़ने या हटाने के द्वारा किया जाता है, और इस प्रकार अप्रत्यक्ष रूप से एक लॉगर हैंडलर के रूप में error_logger को error_logger जाता है।

ध्यान दें कि यह फ़ंक्शन सीधे लकड़हारा कॉन्फ़िगरेशन में हेरफेर नहीं करता है, जिसका अर्थ है कि यदि डिफ़ॉल्ट लकड़हारा हैंडलर पहले से ही किसी फ़ाइल में लॉगिंग कर रहा है, तो यह फ़ंक्शन संभवतः दूसरी फ़ाइल में लॉगिंग का कारण बन सकता है।

यह फ़ंक्शन विकास और परीक्षण के दौरान शॉर्टकट के रूप में उपयोगी है, लेकिन इसका उपयोग उत्पादन प्रणाली में नहीं किया जाना चाहिए। कर्नेल उपयोगकर्ता के गाइड में अनुभाग Logging देखें, और लाइव सिस्टम के लिए लॉगर को कॉन्फ़िगर कैसे करें के बारे में जानकारी के लिए logger(3) मैनुअल पेज।

Request निम्न में से एक है:

{open, Filename}

लॉग फ़ाइल का Filename खोलता है। यदि सफल, या {error, allready_have_logfile} ok , तो यदि फ़ाइल में लॉगिंग पहले से ही सक्षम है, या कोई अन्य त्रुटि हुई (उदाहरण के लिए, यदि Filename नहीं खोला जा सकता है) तो ठीक है। फ़ाइल को UTF-8 एन्कोडिंग के साथ खोला गया है।

close

वर्तमान लॉग फ़ाइल बंद करता है। ok , या {error, module_not_found} लौटाता है।

filename

यदि लॉगिंग फ़ाइल सक्षम नहीं है, तो लॉग फ़ाइल का Filename फ़ाइल Filename , या {error, no_log_file} है।

tty (ध्वज) -> ठीक है

प्रकार

टर्मिनल पर मानक घटनाओं के प्रिंट ( Flag == true ) या अक्षम ( Flag == false ) प्रिंटआउट।

यह लकड़हारा विन्यास में हेरफेर करके किया जाता है। फ़ंक्शन विकास और परीक्षण के दौरान शॉर्टकट के रूप में उपयोगी है, लेकिन इसका उपयोग उत्पादन प्रणाली में नहीं किया जाना चाहिए। कर्नेल उपयोगकर्ता के गाइड में अनुभाग Logging देखें, और लाइव सिस्टम के लिए लॉगर को कॉन्फ़िगर कैसे करें के बारे में जानकारी के लिए logger(3) मैनुअल पेज।

चेतावनी_मैप () -> टैग

प्रकार

चेतावनी घटनाओं के लिए वर्तमान मानचित्रण लौटाता है। कमांड-लाइन फ्लैग +W के मूल्य के आधार पर, warning_msg/1,2 या warning_report/1,2 का उपयोग करके भेजी गई घटनाओं को त्रुटियों, चेतावनियों (डिफ़ॉल्ट) या जानकारी के रूप में टैग किया जाता है।

उदाहरण:

os$ erl
Erlang (BEAM) emulator version 5.4.8 [hipe] [threads:0] [kernel-poll]

Eshell V5.4.8  (abort with ^G)
1> error_logger:warning_map().
warning
2> error_logger:warning_msg("Warnings tagged as: ~p~n", [warning]).

=WARNING REPORT==== 11-Aug-2005::15:31:55 ===
Warnings tagged as: warning
ok
3>
User switch command
 --> q
os$ erl +W e
Erlang (BEAM) emulator version 5.4.8 [hipe] [threads:0] [kernel-poll]

Eshell V5.4.8  (abort with ^G)
1> error_logger:warning_map().
error
2> error_logger:warning_msg("Warnings tagged as: ~p~n", [error]).

=ERROR REPORT==== 11-Aug-2005::15:31:23 ===
Warnings tagged as: error
ok
चेतावनी_msg (प्रारूप) -> ठीक है
चेतावनी_msg (प्रारूप, डेटा) -> ठीक है

प्रकार

मानक चेतावनी ईवेंट लॉग करें। Format और Data तर्क io:format/2 के तर्क के समान हैं io:format/2 STDLIB में io:format/2

त्रुटि लकड़हारा घटना के लिए लकड़हारा, मेटाडेटा सहित कि विरासत त्रुटि लकड़हारा घटना संचालकों के साथ पीछे संगतता की अनुमति देता है।

ईवेंट को डिफ़ॉल्ट लकड़हारा हैंडलर द्वारा नियंत्रित किया जाता है। लॉग स्तर को त्रुटि या जानकारी में बदला जा सकता है, warning_map/0

इन कार्यों को पीछे की संगतता के लिए रखा जाता है और नए कोड द्वारा उपयोग नहीं किया जाना चाहिए। इसके बजाय ?LOG_ERROR मैक्रो या logger:warning/1,2,3 उपयोग करें।

चेतावनी

यदि यूनिकोड अनुवाद संशोधक ( t ) का उपयोग प्रारूप स्ट्रिंग में किया जाता है, तो सभी घटना संचालकों को यह सुनिश्चित करना होगा कि स्वरूपित आउटपुट I / O डिवाइस के लिए सही ढंग से एन्कोडेड है।

चेतावनी_पत्र (रिपोर्ट) -> ठीक है

प्रकार

मानक चेतावनी ईवेंट लॉग करें। त्रुटि लकड़हारा घटना के लिए लकड़हारा, मेटाडेटा सहित कि विरासत त्रुटि लकड़हारा घटना संचालकों के साथ पीछे संगतता की अनुमति देता है।

ईवेंट को डिफ़ॉल्ट लकड़हारा हैंडलर द्वारा नियंत्रित किया जाता है। लॉग स्तर को त्रुटि या जानकारी में बदला जा सकता है, warning_map/0

यह कार्य पीछे की संगतता के लिए रखा गया है और नए कोड द्वारा उपयोग नहीं किया जाना चाहिए। इसके बजाय ?LOG_ERROR मैक्रो या logger:warning/1,2,3 उपयोग करें।

वार्निंग_पोर्ट (टाइप, रिपोर्ट) -> ठीक है

प्रकार

उपयोगकर्ता द्वारा परिभाषित चेतावनी घटना लॉग करें। त्रुटि लकड़हारा घटना के लिए लकड़हारा, मेटाडेटा सहित कि विरासत त्रुटि लकड़हारा घटना संचालकों के साथ पीछे संगतता की अनुमति देता है।

त्रुटि लकड़हारा भी इस घटना के मेटाडेटा के लिए मान [Type] साथ एक domain फ़ील्ड जोड़ता है, जिससे डिफ़ॉल्ट लकड़हारा हैंडलर के फ़िल्टर घटना को छोड़ देते हैं। एक अलग लकड़हारा हैंडलर, या एक त्रुटि लकड़हारा घटना हैंडलर, इस घटना को संभालने के लिए जोड़ा जाना चाहिए।

लॉग स्तर को त्रुटि या जानकारी में बदला जा सकता है, warning_map/0

यह अनुशंसा की जाती है कि Report warning_report/1 रूप में उसी संरचना का अनुसरण करती है जैसे कि।

यह कार्य पीछे की संगतता के लिए रखा गया है और नए कोड द्वारा उपयोग नहीं किया जाना चाहिए। इसके बजाय ?LOG_ERROR मैक्रो या logger:warning/1,2,3 उपयोग करें।

आयोजन

त्रुटि लॉगर में जोड़े गए सभी ईवेंट हैंडलर को निम्न ईवेंट को संभालना होगा। Gleader उस प्रक्रिया का समूह लीडर पिड है, जिसने ईवेंट भेजा है, और Pid वह प्रक्रिया है, जिसने ईवेंट भेजा है।

{error, Gleader, {Pid, Format, Data}}

उत्पन्न होने पर error_msg/1,2 या format कहा जाता है।

{error_report, Gleader, {Pid, std_error, Report}}

उत्पन्न जब error_report/1 कहा जाता है।

{error_report, Gleader, {Pid, Type, Report}}

उत्पन्न होने पर error_report/2 कहा जाता है।

{warning_msg, Gleader, {Pid, Format, Data}}

चेतावनी देने पर चेतावनी के रूप में टैग किए जाने पर चेतावनी देने के लिए चेतावनी देने पर कहा जाता है।

{warning_report, Gleader, {Pid, std_warning, Report}}

चेतावनी देने पर चेतावनी के रूप में टैग किए जाने पर चेतावनी दी जाती है तो चेतावनी दी गई है।

{warning_report, Gleader, {Pid, Type, Report}}

चेतावनी देने पर चेतावनी के रूप में टैग किए जाने पर चेतावनी दी जाती है तो चेतावनी दी गई है।

{info_msg, Gleader, {Pid, Format, Data}}

उत्पन्न जब info_msg/1,2 कहा जाता है।

{info_report, Gleader, {Pid, std_info, Report}}

उत्पन्न जब info_report/1 कहा जाता है।

{info_report, Gleader, {Pid, Type, Report}}

उत्पन्न जब info_report/2 कहा जाता है।

ध्यान दें कि कुछ सिस्टम-आंतरिक घटनाओं को भी प्राप्त किया जा सकता है। इसलिए ईवेंट हैंडलर कॉलबैक फ़ंक्शन Module:handle_event/2 की परिभाषा में एक कैच-ऑल क्लॉज अंतिम है Module:handle_event/2 आवश्यक है। यह Module:handle_info/2 लिए भी लागू होता है Module:handle_info/2 , क्योंकि इवेंट हैंडलर को कुछ सिस्टम-आंतरिक संदेशों का भी ध्यान रखना चाहिए।

यह भी देखें

gen_event(3) , logger(3) , log_mf_h(3) , kernel(6) , sasl(6)