【问题标题】:Filter Asp.netcore logs in Log4Net在 Log4Net 中过滤 Asp.net 核心日志
【发布时间】:2018-04-09 13:31:40
【问题描述】:

我正在使用 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 core junk。 SQL 日志等。

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

我如何使用 Log4net 做到这一点?

【问题讨论】:

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


    【解决方案1】:

    您需要在 WebHostBuilder 上配置日志记录,如下所示: [Program.cs -> 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多