首页 > 解决方案 > 配置 Log4Net 写入 .net 核心中的多个文件

问题描述

问题是Configure Log4net to write to multiple files的延续,请将该主题作为参考。

所以我有一个以两种模式运行的服务:

它有一个 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?我需要将服务和控制台日志拆分为不同的文件。

标签: .net-corelog4net

解决方案


推荐阅读