.net-core - 配置 Log4Net 写入 .net 核心中的多个文件
问题描述
问题是Configure Log4net to write to multiple files的延续,请将该主题作为参考。
所以我有一个以两种模式运行的服务:
- 它作为 Windows 服务运行 24/7
- 它不时按需触发并作为控制台应用程序运行
它有一个 log4net.config(WinService 的 2 个附加程序,控制台的 1 个附加程序):
<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>
日志配置片段是这样的
- 赢得服务部分:
var hostBuilder = Host.CreateDefaultBuilder(args)
.ConfigureLogging((context, builder) =>
{
builder.ClearProviders();
builder.AddLog4Net();
builder.AddEventLog();
})
...
.UseWindowsService();
- 控制台部分:
new ServiceCollection()
.AddSingleton(_ => config)
.AddLogging((configure) =>
{
configure.ClearProviders();
configure.AddLog4Net();
configure.AddEventLog();
})
如您所见,在这两种情况下,log4net 配置都是通过调用完成的configure.AddLog4Net();
问题:如何配置 .AddLog4Net() 以便控制台部分可以使用 ConsoleService 记录器,而 win 服务部分可以使用 WinService?我需要将服务和控制台日志拆分为不同的文件。