[संपादित करें]
हो सकता है कि क्या मैं नीचे का प्रस्ताव लॉग इन करने के लिए एक डेटाबेस प्रक्रिया का उपयोग करने के लिए एक सम्मिलित करें कथन का उपयोग से बदलने के लिए किया जाएगा की तुलना में अधिक स्पष्ट समाधान। यदि आप डेटाबेस प्रक्रिया का उपयोग करते हैं तो आप खाली स्ट्रिंग से स्विजलिंग को अपने आप को कम करने के लिए संभाल सकते हैं। मुझे यकीन नहीं है कि आप एनएलओजी के डाटाबेस लक्ष्य के साथ डेटाबेस प्रक्रिया का उपयोग कर सकते हैं। Log4net इसका समर्थन करता है इसलिए मेरा अनुमान यह है कि एनएलओजी भी करता है।
यहां एक उदाहरण है (लिंक किए गए प्रश्न के उत्तर में) मैंने संग्रहीत प्रक्रिया का उपयोग कर डेटाबेस पर लॉग इन करने के लिए एनएलओजी का उपयोग करने वाले किसी से कॉन्फ़िगरेशन पाया है।
http://nlog-forum.1685105.n2.nabble.com/Using-a-stored-procedure-for-the-DB-Target-td2621725.html
मैं यहाँ देखें:
http://nlog.codeplex.com/workitem/5418
एक शिकायत यह है कि यह काम नहीं करता (कम से कम NLog 2.0 बीटा में)। दो उदाहरण के बीच
एक अंतर यह है कि काम कर रहे उदाहरण का उपयोग करता है "कार्यकारी LoggingProcedureName ..." जबकि nonworking एक का उपयोग करता "LoggingProcedureName ..."
आशा इस मदद करता है।
[समाप्ति संपादित करें]
मैं क्यों NLog अशक्त या कैसे रिक्त स्ट्रिंग के बजाय NLog लिखने अशक्त बनाने के लिए के बजाय emptry तार लिखते हैं इस पर टिप्पणी नहीं कर सकते, लेकिन मुझे आश्चर्य है कि अगर आप वे जिस तरह से आप यह काम कर सकता है अतिरिक्त विन्यास के माध्यम से चाहते हैं?
लॉगिंग पैरामीटर वैकल्पिक कब होते हैं? क्या आपके कोड में कुछ स्थान हैं जहां आप हमेशा कुछ मान और अन्य स्थानों को लॉग करते हैं जहां आपने कभी कुछ मूल्यों को लॉग नहीं किया है? क्या आप (डेवलपर के रूप में) जानते हैं कि कौन से वैकल्पिक पैरामीटर लागू होते हैं जिसमें आपके आवेदन के अनुभाग शामिल हैं?
क्या आप एकाधिक डेटाबेस लक्ष्य कॉन्फ़िगर कर सकते हैं, प्रत्येक निर्दिष्ट "दाएं" पैरामीटर के साथ? फिर आप लॉगर्स को विशिष्ट डेटाबेस लक्ष्य पर इंगित कर सकते हैं जो कोड स्थान के लिए उपयुक्त है।
कहें कि आपका एप्लिकेशन कोड (नामस्थान द्वारा) को कोड में विभाजित किया गया है (आमतौर पर) "पहले", "दौरान" और "बाद" निष्पादित करता है।
"पहले" कोड में, आप पैरामीटर ए लॉगिंग कर रहे हैं। "दौरान" कोड में, आप पैरामीटर बी लॉगिंग कर रहे हैं। "बाद में" कोड में, आप पैरामीटर सी लॉगिंग कर सकते हैं।
DateTime, Logger, LogLevel, A, B, C, Message, Exception
अभी आप एक डाटाबेस लक्ष्य है कि हर प्रवेश करने बयान के लिए उन मूल्यों के सभी सम्मिलित करता है: तो, अपने प्रवेश मेज की तरह कॉलम हो सकता है।
क्या होगा यदि आप तीन डाटाबेस लक्ष्य है कि इतनी तरह मान सम्मिलित है:,
<rules>
<logger name="Before.*" minlevel="Trace" writeTo="databaseA" />
<logger name="During.*" minlevel="Trace" writeTo="databaseB" />
<logger name="After.*" minlevel="Trace" writeTo="databaseC" />
</rules>
जाहिर है इस के साथ कई समस्याएं हो सकता है: आप इस तरह अपने अनुभाग कुछ कॉन्फ़िगर कर सकता है
DataTime, Logger, LogLevel, A, Message, Exception
DataTime, Logger, LogLevel, B, Message, Exception
DataTime, Logger, LogLevel, C, Message, Exception
विचार:
यह आपके लॉग को विभाजित करने के लिए संभव (या आसान) हो सकता है पैरामीटर के "वैकल्पिकता" से मेल खाने के लिए तैयार है।
इस व्यवहार्य बनाने के लिए वैकल्पिक पैरामीटर के बहुत से संयोजन हो सकते हैं (शायद 1 के समान दोष)।
एक समय में डेटाबेस लक्ष्यों को सक्रिय करने का एक अच्छा विचार नहीं हो सकता है। शायद यह प्रदर्शन के मुद्दों का कारण होगा।
ठीक है, मेरे पास यह सब कुछ है। मुझे नहीं पता कि मेरा विचार भी काम करेगा, अगर यह व्यावहारिक है तो बहुत कम।
शायद बेहतर समाधान एनएलओजी के लिए प्रत्येक डेटाबेस पैरामीटर पर अतिरिक्त संपत्ति की अनुमति देने के लिए होगा जो आपको "खाली स्ट्रिंग के बजाय शून्य भेजें" कहने की अनुमति देगा।
मुझे लगता है कि मुझे सुझाव देना चाहिए कि आप इस प्रश्न को NLog forum में भी पूछना चाहेंगे। उस मंच पर "क्रेग" ने आज पहले (या समान) प्रश्न पूछा। शायद आप क्रेग हैं।
मैं फ़ोरम पर क्रेग उपयोगकर्ता हूं। विचारों के लिए धन्यवाद, मैं पहले से ही अपने नलॉग डेटाबेस लक्ष्यों के लिए संग्रहीत प्रक्रिया का उपयोग कर रहा हूं, इसलिए आने वाले पैराम पर खाली तारों के लिए परीक्षण और नल लिखने की संभावना है कि मैं जिस तरह से जाऊंगा, मैं बस आपके द्वारा प्रदान किए गए विकल्पों की तलाश कर रहा था, धन्यवाद विकल्पों के लिए। – cweston