मैं इसका जवाब घटक-आधारित वास्तुकला से आता हूं, जहां एक संगठन कई घटक चला सकता है जो एक दूसरे पर भरोसा कर सकते हैं। एक प्रसार विफलता के दौरान, लॉगिंग स्तर दोनों को पहचानने में मदद करना चाहिए कि कौन से घटक प्रभावित हैं और कौन से मूल कारण हैं।
त्रुटि - इस घटक की विफलता हुई है और इसका कारण माना जाता है कि यह आंतरिक (किसी भी आंतरिक, अखंडित अपवाद, एनकैप्सुलेटेड निर्भरता की विफलता है ... उदाहरण के लिए, डेटाबेस उदाहरण यह एक निर्भरता से 4xx त्रुटि प्राप्त होगा)। मुझे (इस घटक का अनुचर) बिस्तर से बाहर निकालो।
WARN - इस घटक को एक आश्रित घटक के कारण होने वाली विफलता माना गया है (REST उदाहरण एक आश्रित से 5xx स्थिति होगा)। THAT घटक के अनुरक्षकों को बिस्तर से बाहर निकालें।
जानकारी - जो कुछ भी हम एक ऑपरेटर को प्राप्त करना चाहते हैं। यदि आप खुश रास्तों को लॉग इन करने का निर्णय लेते हैं तो मैं महत्वपूर्ण संचालन के अनुसार 1 लॉग संदेश (जैसे आने वाले http अनुरोध) को सीमित करने की सलाह देता हूं।
सभी लॉग संदेशों के लिए उपयोगी संदर्भ को लॉग करना सुनिश्चित करें (और "त्रुटि" के स्थानों के बजाय संदेशों को पढ़ने योग्य / उपयोगी बनाने के लिए प्राथमिकता दें)
- DEBUG (और नीचे) - का उपयोग बिल्कुल नहीं किया जाना चाहिए (और निश्चित रूप से उत्पादन में नहीं)। विकास में, मैं TDD और डिबगिंग के संयोजन का उपयोग करने की सलाह दूंगा (जहां आवश्यक हो) लॉग स्टेटमेंट के साथ प्रदूषणकारी कोड के विपरीत। उत्पादन में, उपरोक्त जानकारी लॉगिंग, अन्य मैट्रिक्स के साथ संयुक्त पर्याप्त होना चाहिए।
उपरोक्त लॉगिंग स्तरों की कल्पना करने का एक अच्छा तरीका प्रत्येक घटक के लिए स्क्रीन की निगरानी के एक सेट की कल्पना करना है। जब सभी अच्छी तरह से चल रहे होते हैं तो वे हरे रंग के होते हैं, यदि कोई घटक एक चेतावनी को लॉग करता है तो यह नारंगी (एम्बर) जाएगा यदि कुछ भी ERROR लॉग करता है तो यह लाल हो जाएगा।
एक घटना की स्थिति में आपके पास एक (मूल कारण) घटक लाल होना चाहिए और सभी प्रभावित घटकों को नारंगी / एम्बर जाना चाहिए।