The question is a continuation of Configure Log4net to write to multiple files, please treat that topic as a reference.
So I have a service running in 2 modes:
- it is running 24/7 as a Windows service
- it is triggered on demand from time to time and runs as a Console application
It has a single log4net.config (2 appenders for WinService, 1 appender for console):
<log4net>
<root>
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="WinService" />
</root>
<logger additivity="false" name="ConsoleService">
<level value="INFO"/>
<appender-ref ref="ConsoleService" />
</logger>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
...
</appender>
<appender name="WinService" type="log4net.Appender.RollingFileAppender">
...
</appender>
<appender name="ConsoleService" type="log4net.Appender.RollingFileAppender">
...
</appender>
and the log configuration fragment goes like this
- win service part:
var hostBuilder = Host.CreateDefaultBuilder(args)
.ConfigureLogging((context, builder) =>
{
builder.ClearProviders();
builder.AddLog4Net();
builder.AddEventLog();
})
...
.UseWindowsService();
- console part:
new ServiceCollection()
.AddSingleton(_ => config)
.AddLogging((configure) =>
{
configure.ClearProviders();
configure.AddLog4Net();
configure.AddEventLog();
})
so as you see in both cases the log4net config is done by calling configure.AddLog4Net();
Question: how to configure the .AddLog4Net() so that the console part could use the ConsoleService logger and the win service part could use the WinService? I need to split the service and console logs into different files.