【问题标题】:log4net debug logs are not shown even if debug level is set to true即使调试级别设置为 true,log4net 调试日志也不会显示
【发布时间】:2021-04-02 19:25:01
【问题描述】:

我在我的 ASP.NET Core 5.0 Web 应用程序中使用 Microsoft.Extensions.Logging.Log4Net.AspNetCore。

在 Startup.cs 中启用了日志记录,如下所示:

services.AddLogging(logging =>
{
    logging.AddLog4Net("log4net.config", true);
});

很遗憾,即使我将级别设置为 DEBUG,日志文件/控制台中也不会显示 DEBUG 日志?!

<log4net>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <!-- Pattern to output the caller's file name and line number -->
            <conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
        </layout>
    </appender>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
        <file value="log/WebApp.log" />
        <appendToFile value="true" />
        <maximumFileSize value="100KB" />
        <maxSizeRollBackups value="2" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
        </layout>
    </appender>
    <appender name="TraceAppender" type="log4net.Appender.TraceAppender">
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
        </layout>
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ManagedColoredConsoleAppender">
        <mapping>
            <level value="ERROR" />
            <foreColor value="Red" />
        </mapping>
        <mapping>
            <level value="WARN" />
            <foreColor value="Yellow" />
        </mapping>
        <mapping>
            <level value="DEBUG" />
            <foreColor value="White" />
        </mapping>
        <mapping>
            <level value="DEBUG" />
            <foreColor value="Green" />
        </mapping>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
        </layout>
    </appender>
    <root>
        <level value="ALL" />
        <appender-ref ref="RollingFile" />
        <appender-ref ref="TraceAppender" />
        <appender-ref ref="ConsoleAppender" />
    </root>
</log4net>

【问题讨论】:

  • 检查 appsettings.json 和 appsettings.Development.json 文件,是否从这里设置了日志级别?此外,您是否使用日志过滤器?如果使用,请尝试移除过滤器或更换过滤器。参考:Middleware Debug logs are not forwarded to log4net provider
  • 谢谢,这解决了我的问题。我用 appsettings.Development.json 覆盖了我的 appsettings.json

标签: c# asp.net-core log4net log4net-configuration


【解决方案1】:

为您的 HostBuilder 配置日志记录。 program.cs 中的典型代码

public static IWebHostBuilder CreateWebHostBuilder(string[] args)
        {
            var HostBuilder = WebHost.CreateDefaultBuilder(args);
            
            HostBuilder
             

              .ConfigureLogging((hostingContext, logging) =>
              {
                  logging.AddLog4Net(Path.Combine(AppContext.BaseDirectory, "cfg", "log4net.config"));
                  logging.SetMinimumLevel(LogLevel.Debug);
              })
              .UseStartup<Startup>();
            return HostBuilder;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2022-07-04
    • 2013-02-15
    相关资源
    最近更新 更多