同じプログラムの2つのインスタンスは、別々のファイルにログインするように構成されています。これが私のlog4net.configです。
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%utcdate] %-5level %logger: %message%newline%exception"/>
</layout>
</appender>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Log/svc-%property{ServiceName}"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="'-'yyyy'-'MM'-'dd'.log'"/>
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%utcdate] %-5level %logger: %message%newline%exception"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="RollingFileAppender"/>
</root>
</log4net>
そして、これが私がログをインスタンス化する方法です:
log = LogManager.GetLogger(ServiceName);
GlobalContext.Properties["ServiceName"] = ServiceName;
XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config"));
現在、サービスは「Service1」、「Service10」、「Service2」などと呼ばれています。
テストしているサービス1と10を開始すると、両方ともログファイルを作成します。
svc-BettweenSvc1-2011-07-26.log
svc-BettweenSvc10-2011-07-26.log
ただし、2番目のサービスが開始されると、最初のサービスのログが2番目のログに追加され始め、そのサービスは使用されなくなります。
log4netを使用してWindowsサービスでログファイルを正しく分離するためにログを記録するにはどうすればよいですか?