2015-11-03 3 views
5

Ich möge LogicalThreadContext verwenden, um einige Kontextinformationen in meinem WCF-Dienst zu übergeben. Ich muss verschiedene Eigenschaften übergeben. In C# hat I-CodeEntfernen log4net Systemeigenschaften von Ausgang

LogicalThreadContext.Properties["MyProperty"] = 1; 

in log4net Config I

haben
<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> 

Und ich log bekam

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

Ich will nicht Systemeigenschaften haben log4net: Identität, log4net : Benutzername und log4net: Hostname im Protokoll. Wie macht man das? Ich kann Config wie diese

schreiben Aber ich habe mehrere Eigenschaften in Code und ich möchte nur Eigenschaften, um zu sehen, die ich hinzugefügt. Code

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

funktioniert nicht.

+0

Können Sie zeigen Ihre vollständige Konfiguration? – stuartd

+0

Hinzugefügt in Frage –

Antwort

3

Ich fand, dass es möglich ist, nur log4net: HostName Eigenschaft mit Code GlobalContext.Properties.Remove(LoggingEvent.HostNameProperty) zu entfernen. log4net: Identität und log4net: Username kann nicht wegen CreateCompositeProperties Methode in log4net.Core.LoggingEvent Klasse https://github.com/apache/log4net/blob/trunk/src/Core/LoggingEvent.cs entfernt werden. Es fügt diese Eigenschaften ohne jegliche Bedingungen, und es ist so imposible sie für die letzte log4net Version zu entfernen.

0

hatte ich das gleiche Problem.

GlobalContext.Properties.Clear(); 

Arbeitete für mich.