I have a Windows Service process that receives WCF requests. For each request, it creates new thread that does some work. I want to create one log file for the host process and separate unique log file per thread instance. For example, I want the log file to be something like '%date{yyyyMMdd}_%property{UniqueId}.log'. Here is what I have so far.
<appender name="ThreadAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="c:\Logs\%date{yyyyMMdd}\%date{HHmmss}_%property{FileID}.log"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="10MB"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<header value="[Header]
"/>
<footer value="[Footer]
"/>
<conversionPattern value="[%date] [%thread] [%-5level] %logger - %message%newline"/>
</layout>
</appender>
<appender name="ServiceAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\Logs\Service.log"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="10MB"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<header value="[Header]
"/>
<footer value="[Footer]
"/>
<conversionPattern value="[%date] [%thread] [%-5level] %logger - %message%newline"/>
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="ThreadAppender"/>
</root>
<logger name="ServiceLogger" additivity="false">
<level value="INFO"/>
<appender-ref ref="ServiceAppender"/>
</logger>
Then, in my thread, I use LogicalContext.Properties["FileID"] = <some id>.
I also have [assembly: log4net.Config.XmlConfigurator(Watch = true)] line in the assemblyinfo.cs file.
Everything almost works :). The one issue is that when I start the Windows Service, it automatically creates new %date{HHmmss}_(null).log file. What do I need to configure so that log4net does not create this dummy file? Also, do I need to specify file locking for ServiceAppender and ThreadAppender?