Je pourrais le faire en utilisant PropertyFilter. J'ai défini l'appender suivant dans le fichier de configuration:
<appender name="UiFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Log1.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
<filter type="log4net.Filter.PropertyFilter">
<Key value="channel"/>
<StringToMatch value="ui" />
<AcceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<appender name="WsFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Log1.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
<filter type="log4net.Filter.PropertyFilter">
<Key value="channel"/>
<StringToMatch value="ws" />
<AcceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
La partie importante de l'appendeur ci-dessus est des balises.Lorsque l'utilisateur utilise l'interface utilisateur que je mets propriété « canal » à « ui » comme le code suivant:
log4net.GlobalContext.Properties["channel"] = "ui";
et lorsque l'utilisateur utilise des services Web que j'utilise le code suivant:
log4net.GlobalContext.Properties["channel"] = "ws";
Dois-je définir "channel" propriété sur le plus haut niveau d'entrée lorsque la demande est lancée.