2013-06-13 13 views
5

संस्करण 1.2.11 का उपयोग करना। लॉगिंग मेरी dev मशीन पर काम करता है, लेकिन तैनात किए जाने पर निर्देशिका या लॉग नहीं बनाएगा।लॉग 4नेट लॉग इन नहीं किया गया जब

मैंने कोशिश की:

  • IUSR, सब लोग, स्थानीय उपयोगकर्ताओं के लिए पूर्ण निर्देशिका पहुंच प्राप्त होगी।
  • स्थानीय व्यवस्थापक खाते के रूप में ऐप पूल चला रहा है।
  • Phil Haack describes here के रूप में आंतरिक डीबगिंग का उपयोग करने के लिए।

रोक दिया और प्रत्येक परिवर्तन के बाद ऐप पूल शुरू किया।

आउटपुट फ़ाइल में कुछ भी नहीं बनाया जाता है।

मेरा log4Net कॉन्फ़िगरेशन नीचे है। आगे क्या कोशिश करने के बारे में कोई विचार?

<?xml version="1.0"?> 
<log4net debug="true"> 
    <appender name="file" type="log4net.Appender.RollingFileAppender"> 
    <file value="..\Logging\log.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Composite" /> 
    <datePattern value="yyyyMMdd" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="1MB" /> 
    <threshold value="DEBUG" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
    </appender> 
    <appender name="console" type="log4net.Appender.DebugAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n" /> 
    </layout> 
    </appender> 
    <root> 
    <level value="ALL" /> 
    <appender-ref ref="file" /> 
    <appender-ref ref="console" /> 
    </root> 
</log4net> 
+0

उत्पादन निर्देशिका या फ़ाइल बनाई है? –

+0

नहीं, न ही बनाया गया है। –

+1

कोड में, क्या आप XML कॉन्फ़िगरेशन का उपयोग करने के लिए Log4Net सेट अप कर रहे हैं? कहीं भी 'एक्सएमएल कॉन्फिगरेटर' वर्ग का उपयोग करना चाहिए। –

उत्तर

6

यदि निर्देशिका और फ़ाइल नहीं बनाई जा रही है, तो सबसे अधिक संभावना है कि कॉन्फ़िगरेशन रनटाइम पर पढ़ा नहीं जा रहा है (और इसलिए उपयोग किया जाता है)।

मैं हमेशा लॉग 4नेट के लिए कोड की एकल पंक्ति जोड़ना भूल जाता हूं जो कॉन्फ़िगरेशन को हुक करता है। यह कोड आमतौर पर एप्लिकेशन में बूटस्ट्रैप क्लास में दिखाई देता है (उदा। एएसपी.नेट ऐप के लिए ग्लोबल.एक्सएक्स)।

XmlConfigurator.Configure(new System.IO.FileInfo(configFile)); // configFile being the path to the file. 
में लाइन से ऊपर के बजाय

, आप AssemblyInfo.cs फाइल करने के लिए इस विशेषता जोड़ सकते हैं:

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

किसी भी तरह से, इस log4net ऊपर तार होगा। अधिक जानकारी Manual Configuration section of the log4net docs में पाई जाती है।जवाब में से

+8

मुझे यकीन नहीं है कि यह कैसे विकास के माहौल में लॉग इन करने में सक्षम होने के बारे में बताता है। –

+2

मैं थोड़ी देर के लिए इस पर दीवार के खिलाफ अपना सिर मार रहा था। मैंने AssemblyInfo.cs विधि का उपयोग करने का प्रयास किया, और यह मेरे स्थानीय देव बॉक्स पर काम किया लेकिन सर्वर पर नहीं। एक बार जब मैंने लाइन 'XmlConfigurator.Configure();' Global.asax.cs फ़ाइल में जोड़ा, तो यह काम किया! – JebaDaHut

+0

@JebaDaHut के समान - यह Assembly देवता लाइन का उपयोग करके मेरी देव मशीन पर काम कर रहा था, लेकिन तैनात नहीं किया गया था। 'XmlConfigurator.ConfigureAndWatch (नया FileInfo (....)) जोड़ने के बाद, क्या यह मेरे परिनियोजन सर्वर पर लॉगिंग शुरू कर दिया। – silencedmessage

2

मुझे अनुमति अनुमति की तरह लगता है। मैं लगभग हमेशा एक निर्देशिका का उपयोग करता हूं जहां मुझे लॉग फ़ाइलों को लिखने के लिए अनुप्रयोगों के लिए किसी विशेष अनुमति को सक्षम करने की आवश्यकता नहीं होती है।

<file type="log4net.Util.PatternString" value="${ALLUSERSPROFILE}/<Company Name>/Logs/<Program Name>/<Log file name>.txt" /> 
cource के

आप स्थानापन्न कंपनी का नाम, प्रोग्राम का नाम और वास्तविक मूल्यों के साथ ऊपर में फ़ाइल नाम के लिए लॉग इन करना होगा:

यहाँ क्या मैं आम तौर पर log4net के साथ उपयोग करें।

यह प्रोग्रामडेटा फ़ोल्डर को लिख देगा जहां एक्सेस आम तौर पर प्रतिबंधित नहीं है। आप% ExplorerData% या% AllUsersProfile%

टाइप करके फ़ाइल एक्सप्लोरर में इस फ़ोल्डर में नेविगेट कर सकते हैं। इस विधि के बारे में मुझे एक और चीज़ यह है कि यह लगभग हर माइक्रोसॉफ्ट ओ/एस पर काम करता है। XP, विस्टा, 7, 8

2

आप शायद नहीं जानते कि तुम कहाँ प्रवेश कर रहे हैं:

<file value="..\Logging\log.txt" /> 

विल अपने चल निर्देशिका है, जो अपनी निर्देशिका आईआईएस है से ली गई है। आप बेहतर पथ का उपयोग कर सकते हैं जैसे:

<file value="c:\Logging\log.txt" /> 

फिर आप लॉगिंग निर्देशिका के लिए सही पहुंच अधिकार दे सकते हैं। जहां तक ​​मुझे पता है Log4net कोई निर्देशिका नहीं बनाएगा। तो आपको पहले c: \ logging निर्देशिका बनाना होगा।

0

गैर मेरे लिए काम किया जब तक मैं web.config एप्लिकेशन सेटिंग पर इन पंक्तियों डाल:

<add key="log4net.Config" value="Log.config" /> 
<add key="log4net.Config.Watch" value="True" /> 
संबंधित मुद्दे