में वैश्विक अपवाद हैंडलिंग वेब एपीआई 2.1 में नया Global Error Handling है। मुझे कुछ उदाहरण मिला कि एल्मा (elmah sample) में अपवाद लॉग कैसे करें। लेकिन मैं डेटाबेस तालिका में त्रुटियों को लॉग करने के लिए एनएलओजी का उपयोग करता हूं। क्या एनएलओजी के साथ वेब एपीआई ग्लोबल एरर हैंडलिंग का उपयोग करना उचित है? कृपया कुछ उदाहरण प्रदान करें।वेब एपीआई 2.1 और एनएलओजी
40
A
उत्तर
46
यह वास्तव में काफी सरल है, आप या तो IExceptionLogger
को हाथ से या बेस क्लास, ExceptionLogger
से प्राप्त करते हैं।
public class NLogExceptionLogger : ExceptionLogger
{
private static readonly Logger Nlog = LogManager.GetCurrentClassLogger();
public override void Log(ExceptionLoggerContext context)
{
Nlog.LogException(LogLevel.Error, RequestToString(context.Request), context.Exception);
}
private static string RequestToString(HttpRequestMessage request)
{
var message = new StringBuilder();
if (request.Method != null)
message.Append(request.Method);
if (request.RequestUri != null)
message.Append(" ").Append(request.RequestUri);
return message.ToString();
}
}
इसके अलावा config में जोड़ें:
var config = new HttpConfiguration();
config.Services.Add(typeof(IExceptionLogger), new NLogExceptionLogger());
पूर्ण नमूना समाधान here पा सकते हैं।
4
अन्य चीज जो आसान हो सकती है WebApiContrib.Tracing.NLog पैकेज जो आपको आईएलआरईआरआरआईटर इंटरफ़ेस का उपयोग एनएलओजी के साथ लॉग करने के लिए आउटपुट करने की अनुमति देता है। ITraceWriter के बारे में एक अच्छी बात यह है कि "सभी निशान एक ही अनुरोध से संबंधित हो सकते हैं जिससे कोड चलाना पड़ता है (this link देखें)
संबंधित मुद्दे
- 1. डब्ल्यूसीएफ वेब एपीआई और एएसपी.नेट वेब एपीआई
- 2. ओडीटा और वेब एपीआई
- 3. एनएलओजी और अंतिम नियम
- 4. एनएलओजी
- 5. एनएलओजी
- 6. Google स्पीच एपीआई और वेब स्पीच एपीआई
- 7. एंड्रॉइड 2.1 और 2.2
- 8. चेरीपी और रीस्टफुल वेब एपीआई
- 9. वेब एपीआई और एएसपी एमवीसी
- 10. ASP.net वेब एपीआई और System.Net.Http
- 11. वेब एपीआई और मॉडल बाइंडिंग
- 12. यूनिटी और वेब एपीआई नियंत्रक
- 13. वेब-एपीआई और स्वैगर दस्तावेज
- 14. वेब एपीआई और HTTP मॉड्यूल
- 15. एएसपी.नेट वेब एपीआई और यूआरएलडीकोड
- 16. वेब एपीआई और वैलीडेटएन्टीफोर्गरी टोकन
- 17. कैसे वेब एपीआई और OData
- 18. वेब एपीआई नियंत्रक और सीएसआरएफ
- 19. वेब एपीआई समेकन और स्केलेबिलिटी
- 20. एनएलओजी घुमाने और सफाई लॉगफाइल
- 21. सिम्फनी 2.1 आरईएसटी एपीआई लॉगिन हर जगह
- 22. एंड्रॉइड 2.1 में पॉपअपमेनू एपीआई 7
- 23. डब्लूसीएफ वेब एपीआई में एएसपी.नेट वेब एपीआई
- 24. वेब एपीआई OData Inlinecount
- 25. एएसपी.Net वेब एपीआई 2
- 26. वेब एपीआई
- 27. वेब एपीआई
- 28. वेब एपीआई
- 29. वेब एपीआई
- 30. वेब एपीआई
किसी भी तरह से ExceptionLoggerContext (शायद .xceptionContext.ControllerContext.GetType()) का उपयोग करना संभव होगा नियंत्रक-विशिष्ट लॉगर प्राप्त करें? यह हमें (Nlog.config के माध्यम से) प्रति नियंत्रक अपवाद लॉगिंग चालू/बंद करने में सक्षम करेगा। उपरोक्त लॉगर GetCurrentClassLogger का उपयोग करके तत्काल है जिसका अर्थ है कि लॉग इवेंट प्रति नियंत्रक के बीच अंतर करना संभव नहीं होगा ठीक है? –
हालांकि यह अपवाद लॉगिंग है, इसे लॉग इन करने के बजाय अपवाद हैंडलिंग के लिए और भी कुछ है। उदाहरण के लिए आप क्लाइंट को उचित संदेश के साथ एक समान संदेश वापस लौटना चाहते हैं। क्या यह पैटर्न इस कवर द्वारा कवर किया गया है? –
@SonicSoul यह आवश्यकता लॉगर कार्य से कोई लेना देना नहीं है। बस लागू करें IHttpActionResult इंटरफ़ेस का उल्लेख करें और एक अच्छा स्ट्रिंग सामग्री संदेश लौटाएं। – Pascal