2009-12-17 13 views
11

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

दूसरे शब्दों में, अगर मैं .. \ myapp.exe चलाने के लिए, मैं में लॉग फाइल नहीं करना चाहते .. \ मैं उन्हें चाहते हैं। \

उत्तर

14

मैं log4net स्रोत को देख समाप्त हो गया और निर्धारित है कि मैं अपने स्वयं के एपेंडर को कार्यान्वित कर सकता हूं जो फ़ाइल एपेंडर को बढ़ाता है और फ़ाइल प्रॉपर्टी को ओवरराइड करता है।

मैं बस अपने कॉन्फ़िगरेशन में CWDFileAppender का उपयोग करता हूं।

+0

अरे kiko, अपने उत्तरों में ऐसे अद्यतन डाल दिया। थ्रेड को साफ रखता है, जब तक कि आपके पास अपने प्रश्न का सही उत्तर न हो ... –

+1

यह मेरे अपने प्रश्न का "सही" उत्तर है। –

+0

यह मेरे लिए अच्छा काम करता है, हालांकि मुझे RollingFileAppender से विरासत मिली है। मैंने इसे एक सामान्य पुस्तकालय में भी रखा है जिसका उपयोग मैं करता हूं ताकि मैं इसे अपनी सभी परियोजनाओं में उपयोग कर सकूं। यदि आप ऐसा करते हैं तो असेंबली को भी अपनी कॉन्फ़िगरेशन में निर्दिष्ट करना याद रखें। <एपेंडर नाम = "लॉगफाइल ऐपेंडर" प्रकार = "My.Library.CurrentDirectoryRollingFileAppender, My.Library"> – Stuntbeaver

2

कॉन्फ़िग फ़ाइल से संभव नहीं है, प्रति here के रूप में ।

public static log4net.Appender.IAppender CreateFileAppender(string name, 
string fileName) 
{ 
    log4net.Appender.FileAppender appender = new 
log4net.Appender.FileAppender(); 
    appender.Name = name; 
    appender.File = fileName; 
    appender.AppendToFile = true; 

    log4net.Layout.PatternLayout layout = new 
log4net.Layout.PatternLayout(); 
    layout.ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n"; 
    layout.ActivateOptions(); 

    appender.Layout = layout; 
    appender.ActivateOptions(); 

    return appender; 
} 

फिर आप लकड़हारा के साथ संबद्ध के रूप में निम्नानुसार कर सकते हैं:: यह संभव हो तो आप ही आपके प्रोग्राम के अंदर से मैन्युअल रूप से इसे कॉन्फ़िगर कर रहे हैं हो सकता है

AddAppender("Log4net.MainForm", CreateFileAppender("FileAppender", 
Path.Combine(Directory.GetCurrentDirectory(), "foo.log"))); 
+0

यह पुष्टि करता है कि मैं क्या सोच रहा था। मैंने कॉन्फ़िगर करने योग्य बनाने के लिए एक बहुत आसान तरीका के साथ अपना स्वयं का उत्तर पोस्ट किया। –

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