2015-11-03 20 views
5

से log4net सिस्टम गुणों को निकालें मैं अपनी डब्ल्यूसीएफ सेवा में कुछ संदर्भ जानकारी पास करने के लिए LogicalThreadContext का उपयोग करना चाहता हूं। मुझे विभिन्न गुणों को पारित करने की आवश्यकता है। सी # में मैं मैंआउटपुट

<log4net> 
<appender name="RollingLogFileAppenderSize" type="log4net.Appender.RollingFileAppender"> 
    <file value="Logs\Log.log" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Composite" /> 
    <datePattern value="yyyyMMdd" /> 
    <maxSizeRollBackups value="3" /> 
    <maximumFileSize value="5MB" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%d [%2t] [%property] %level %m%n" /> 
    </layout> 
</appender> 
<root> 
    <level value="INFO" /> 
    <appender-ref ref="RollingLogFileAppenderSize" /> 
</root> 
</log4net> 

है और लॉग में मुझे मिल गया

2015-11-03 16:24:36,313 [10] [{MyProperty=1, log4net:Identity=, log4net:UserName=User, log4net:HostName=User}] INFO - Info 

मैं नहीं है करने के लिए सिस्टम गुण log4net चाहते कोड

LogicalThreadContext.Properties["MyProperty"] = 1; 

है log4net config में: पहचान, log4net : उपयोगकर्ता नाम और log4net: लॉग में HostName। यह कैसे करना है? मैं इस

पर कोड लिख सकता हूं लेकिन मेरे पास कोड में कई गुण हैं और मैं केवल उन्हीं गुणों को देखना चाहता हूं जो मैंने जोड़े हैं। कोड

LogicalThreadContext.Properties.Remove("log4net:UserName"); 

काम नहीं करता है।

+0

क्या आप अपनी पूर्ण कॉन्फ़िगरेशन दिखा सकते हैं? – stuartd

+0

प्रश्न में जोड़ा गया –

उत्तर

3

मैंने पाया कि केवल लॉग 4नेट को हटाने के लिए यह उचित है: कोड GlobalContext.Properties.Remove(LoggingEvent.HostNameProperty) कोड के साथ होस्टनाम संपत्ति। लॉग 4नेट: पहचान और लॉग 4नेट: CreateCompositeProperties विधि log4net.Core.LoggingEvent कक्षा https://github.com/apache/log4net/blob/trunk/src/Core/LoggingEvent.cs में उपयोगकर्ता नाम को हटाया नहीं जा सकता है। यह इन गुणों को बिना किसी शर्त के जोड़ता है और इसलिए अंतिम लॉग 4नेट संस्करण के लिए उन्हें निकालने के लिए यह असंभव है।

0

मुझे एक ही समस्या थी।

GlobalContext.Properties.Clear(); 

मेरे लिए काम किया।