在Log4Net中过滤Asp.netcore日志

时间:2018-04-09 13:31:40

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

我正在使用ASP.NET Core并创建了一个Log4net日志记录提供程序。

我当前的log4net.config文件如下所示:

    <?xml version="1.0" encoding="utf-8" ?>
<log4net debug="true">
  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="logs\\" />
    <appendToFile value="true" />
    <DatePattern value="yyyy\\\\MM\\\\dd'.inf.log'" />
    <rollingStyle value="Date" />
    <param name="StaticLogFileName" value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] &lt;%property{auth}&gt; - %message%newline" />
    </layout>
  </appender>
  <appender ref="HangfireLoggerAppender" type="log4net.Appender.RollingFileAppender">
    <file value="logs\HangfireLog.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="1MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>
  <root>
    <level value="DEBUG" />
    <appender-ref ref="LogFileAppender" />
  </root>
  <logger additivity="false" name="Hangfire">
    <level value="INFO" />
    <appender-ref ref="HangfireLoggerAppender" />
  </logger>
</log4net>

日志显示了很多asp.net核心垃圾。 SQL日志等。

我想过滤掉: Microsoft.AspNetCore。* Microsoft.EntityFrameworkCore。*

如何使用Log4net执行此操作?

1 个答案:

答案 0 :(得分:0)

您需要按如下方式配置WebHostBuilder的日志记录: [Program.cs - &gt; BuildWebHost(string [] args)]

  return WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
         ConfigureLogging((hostingContext, logging) =>
             {   logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
                 logging.AddFilter("Microsoft.AspNetCore", LogLevel.Information);
                 logging.AddFilter(" Microsoft.EntityFrameworkCore", LogLevel.Information);
                 logging.AddConsole();
                 logging.AddDebug();
             })
        .Build();

您调用logging.AddFilter方法,将名称空间指定为第一个参数,将LogLevel指定为第二个参数。

如果您不想在代码中执行此操作,也可以使用appsettings.json文件中的配置来完成。您可以阅读更多here