2016-02-05 2 views
15

जब तक कि मैं इसे पूरी तरह से याद नहीं कर रहा हूं, मैं इस धारणा के तहत हूं कि NLog documentation इसके उदाहरणों में ${basedir} का उपयोग करता है, बिना यह बताए कि यह स्थान क्या है।

मुझे ऐसी जानकारी कहां मिल सकती है जो सार्थक वर्णन के साथ सभी संभावित विकल्पों को सूचीबद्ध करती है?

मैं इस विन्यास में परिभाषित किया गया है:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true"> 
    <targets> 
    <target name="file" xsi:type="File" 
       layout="${longdate} ${logger} ${message}" 
       fileName="${basedir}/logs/${shortdate}.txt" 
       keepFileOpen="false" 
       encoding="iso-8859-2" /> 
    </targets> 
    <rules> 
    <logger name="*" minlevel="Debug" writeTo="file" /> 
    </rules> 
</nlog> 

यह जहाँ तक मैं बता सकता है काम करता है, लेकिन मैं एक सुराग जहां यह कुछ भी लॉग नहीं मिला है।

+1

आउटपुट निर्देशिका => हमेशा कॉपी करने के लिए NLog-config-file के लिए विजुअल स्टूडियो के अंदर फ़ाइल गुणों को बदलने के लिए याद रखें। वैकल्पिक रूप से app.config में nlog-config को इंजेक्ट करें https://gist.github.com/Chrisso/1703644 –

उत्तर

14

${basedir} - निर्देशिका जहां एप्लिकेशन चलाता है। मुझे लगता है, आपको यह उपयोगी लगेगा: https://github.com/NLog/NLog/wiki/Layout-Renderers

+2

तो 'bin \ debug' फ़ोल्डर, यदि आप इसे VS से चला रहे हैं? उस स्थिति में यह काम नहीं करता है, क्योंकि मुझे कोई फाइल नहीं दिखती है। मुझे हालांकि कोई त्रुटि नहीं है। – Spikee

+0

@Spikee आप इसे अपने आवेदन में AppDomain.CurrentDomain.BaseDirectory – galakt

+1

द्वारा देख सकते हैं, वास्तव में यह 'bin \ debug' है, लेकिन मुझे' लॉग 'सबफ़ोल्डर नहीं, और न ही कोई फ़ाइल दिखाई देती है। – Spikee

3

यह प्लेटफ़ॉर्म पर भी निर्भर करता है। नियमित रूप से .Net प्रोजेक्ट्स के लिए यह वास्तव में बिन या बिन/डीबग इत्यादि है (आपकी बिल्ड सेटिंग्स के आधार पर)

कोरक्लर/aspnet5 के लिए यह आपके डीएनएक्स रनटाइम का बिन फ़ोल्डर है। यह अभी भी प्रगति पर काम कर रहा है।

2

के आधार पर पहले से ही प्रदान की जवाब और टिप्पणियों, जवाब .NET अनुप्रयोग के लिए अभिव्यक्त किया जा सकता है:

AppDomain.CurrentDomain.BaseDirectory 

कंसोल के लिए या Windows फॉर्म्स आवेदन, इस निर्देशिका bin/debug जबकि दृश्य स्टूडियो के भीतर है। यदि आवेदन तैनात किया गया है, तो पथ शायद निष्पादन योग्य पथ होगा।

वेब अनुप्रयोगों (एएसपी.नेट) के लिए यह वेब अनुप्रयोग रूट निर्देशिका होगी।

किसी भी फाइल को कई कारणों से ट्रिगर नहीं किया जा सकता है जिसमें शामिल हैं: एनएलओजी कॉन्फ़िगरेशन त्रुटियां और लक्ष्य फ़ाइल लिखने में सक्षम नहीं है। बेनकाब करने के लिए इन त्रुटियों को सुनिश्चित करें कि NLog.config (या Nlog विन्यास web.config या app.config भीतर एम्बेडेड) उत्पादन ऐसी त्रुटियों को एक आंतरिक लॉग फ़ाइल निर्दिष्ट करता है:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     internalLogFile="C:\NLogError\NLog.log"> 

<!-- targets and rules come here --> 

</nlog> 
2

विफलता के लिए एक और संभावना है कि आप कर रहे हैं वह यह है कि NLog.config का उपयोग करके, एनएलओजी कॉन्फ़िगरेशन फ़ाइल नहीं ढूंढ सकता है। फाइल को हमेशा अपने निर्माण में प्रतिलिपि बनाने के लिए सेट करें और यह आपकी बिन निर्देशिका में समाप्त हो जाएगी, इसलिए एनएलओजी इसे रनटाइम पर ढूंढ सकता है।

यदि आप एनएलओजी कॉन्फ़िगरेशन जानकारी को अपने App.config पर कॉपी करते हैं, तो आपको यह समस्या नहीं होगी।

+0

मैं भी इसी तरह की चीज में भाग गया जहां मुझे "विजुअल टू एक्सपूट" विकल्प को फ्लिप करने की आवश्यकता थी, "एनएलओजी.एक्सएसडी" (जिसे एनएलओजी कॉन्फ़िगरेशन में संदर्भित किया गया है) की एक प्रतिलिपि के लिए मेरे विजुअल स्टूडियो प्रोजेक्ट में इससे पहले कि मुझे कोई लॉग मिल सके परीक्षण के दौरान मेरे "बिन/डीबग" फ़ोल्डर में लिखने के लिए। –

संबंधित मुद्दे