2009-12-21 13 views
11

app.config फ़ाइल का उपयोग करके मैं विशेष फ़ोल्डर (उदा। %APPDATA%) पर लॉग इन कैसे कर सकता हूं?मैं log4net के साथ विशेष फ़ोल्डर्स पर लॉग कैसे कर सकता हूं?

मैं इसे प्रोग्रामेटिक रूप से कर सकता हूं, लेकिन मुझे कॉन्फ़िगरेशन के लिए app.config फ़ाइल का उपयोग करने में सक्षम होना चाहिए। मैंने %envFolderPath का उपयोग करने की एक पोस्ट देखी है। यह नवीनतम रिलीज़ संस्करण में उपलब्ध नहीं है, लेकिन केवल अपने नवीनतम कोड में उपलब्ध है।

नीचे वह कोड है जिसे मैं प्रोग्राम को विशेष रूप से विशेष फ़ोल्डर में लॉग सेट करता हूं।

public void ExampleLog 
{ 
    XmlConfigurator.Configure(); 

    var fileName = GetFileName(); 
    var appender = new log4net.Appender.RollingFileAppender 
    { 
     Layout = new log4net.Layout.PatternLayout("%d - %m%n"), 
     File = fileName, 
     MaxSizeRollBackups = 10, 
     MaximumFileSize = "100MB", 
     AppendToFile = true, 
     Threshold = Level.Debug 
    }; 

    appender.ActivateOptions(); 
    BasicConfigurator.Configure(appender); 
} 

private static string GetFileName() 
{ 
    const string subPath = "MySubFolder"; 
    var path = String.Format(@"{0}\{1}", Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData), subPath); 
    const string logName = "Log.txt"; 
    return Path.Combine(path, logName); 
} 
+1

संभव डुप्लिकेट [log4net के लिए सामान्य अनुप्रयोग डेटा फ़ोल्डर निर्दिष्ट करने के लिए कैसे?] (Http://stackoverflow.com/questions/468989/how-to-specify-common-application-data-folder-for- log4net) –

उत्तर

11

बहुत यकीन है कि इसके लिए वाक्यविन्यास वर्तमान रिलीज में उपलब्ध है।

<file type="log4net.Util.PatternString" value="%env{APPDATA}\\MyApp\\Log.txt" /> 

आप अधिक कुछ की जरूरत है, आप के रूप में यहाँ वर्णित, PatternString वर्ग उपवर्गीकरण का विकल्प पर गौर कर सकते हैं: Log4Net can’t find %username property when I name the file in my appender

+0

देर से प्रतिक्रिया के लिए खेद है। धन्यवाद! – user9969

+0

मुझे नहीं लगता कि यह एक अच्छा विचार है, क्योंकि Vista और Windows 7 पर,% APPDATA% उपयोगकर्ता की * रोमिंग * निर्देशिका का समाधान करता है, जिसका अर्थ है कि लॉग फ़ाइलों को डोमेन सर्वर से समन्वयित किया जाएगा और प्रत्येक बार उपयोगकर्ता लॉग डाउनलोड किया जाएगा इन्हें यहां टिप्पणी देखें: http://stackoverflow.com/questions/1572934/where-to-store-an-plication-log-file-on-windows/1573015#1573015 – GuyBehindtheGuy

+2

यदि आप चिंतित हैं रोमिंग डेटा सिंक करने का समय, फिर% LOCALAPPDATA% (गैर-रोमिंग समतुल्य) का उपयोग करें। मुझे लगता है कि लॉग फाइलों के लिए आमतौर पर किसी भी मामले में बेहतर होगा, भले ही उन्हें कितना बड़ा लगे। –

4

चेक बाहर log4net डॉक्स पर RollingFileAppender विन्यास नमूना (अन्य सभी मापदंडों के लिए) ।

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="log.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="100KB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.SimpleLayout" /> 
    </layout> 
</appender> 

मैं बुनियादी log4net चर प्रारूप ${NAME} साथ (विशेष फ़ोल्डरों सहित) वातावरण चर संदर्भित किया है। और file टैग को PatternLayout निर्दिष्ट करने की आवश्यकता नहीं है, यह निहित है।

<file value="${APPDATA}\log.txt" /> 
की
संबंधित मुद्दे