I'm creating a console app which does importing of some data of different kinds. The type of data to import is specified by argument. For each type of import I created a logger and an appender with different filenames specified:
<logger name="ClientsImporter">
<level value="INFO" />
<appender-ref ref="ClientsImporter" />
</logger>
<logger name="PricesImporter">
<level value="INFO" />
<appender-ref ref="PricesImporter" />
</logger>
<appender name="ClientsImporter" type="log4net.Appender.RollingFileAppender">
<file value="..\logs\ClientsImporter_log" />
[...]
</appender>
<appender name="PricesImporter" type="log4net.Appender.RollingFileAppender">
<file value="..\logs\ImbalancePricesImporter_log" />
[...]
</appender>
<root>
<level value="INFO" />
<appender-ref ref="VisualStudioDebugOutput" />
<appender-ref ref="ColoredConsoleAppender" />
</root>
In my code I have a class for each import type and this class instance of Logger created like this:
internal readonly ILog Log = LogManager.GetLogger("ClientsImporter");
The problem is that apparently log4net wants exclusive lock on all files for all appenders. Not only those used by current run of application. This is a problem because some imports can overlap witch each other (performed by different instances of same program) and then log4net throws error that it cannot get exclusive lock on log files (even those that will not be used by it).
Is there any way to tell log4net which loggers to use and ignore others?