不同日志级别的多 appender(文件和应用洞察)的配置文件设置

Config file setting for Multi appenders(file and app insight) with different log level

提问人:Sumanth Shendye 提问时间:7/10/2023 更新时间:7/11/2023 访问量:40

问:

我需要记录到文件以及具有不同日志级别的应用程序见解。我有下面的配置文件设置,该设置在文件和应用程序见解中都记录了 DEBUG 级别。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="ConsoleAppender"/>
    </root>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <level value="DEBUG" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%utcdate [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="ApplicationInsightAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender">
      <level value="ERROR" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%utcdate [%thread] %-5level %logger - %message%newline"/>
      </layout>       
    </appender>
    <logger name ="appinsightlogger">
      <level value ="ERROR"></level>
      <appender-ref ref="ApplicationInsightAppender"/>
    </logger>
  </log4net>
</configuration>

我还尝试在根元素下注册两个附加器,如下所示

<root>
  <level value="DEBUG"/>
  <appender-ref ref="ConsoleAppender"/>
  <level value ="ERROR"></level>
  <appender-ref ref="ApplicationInsightAppender"/>
</root>

但仍然没有看到所需的结果。谁能帮忙?

文件 记录 log4net log4net-appender appinsights

评论


答:

1赞 pfx 7/11/2023 #1

appender 没有属性。
Log4net 通过以下消息通知此信息。
level

log4net:错误 XmlHierarchyConfigurator:找不到属性 [level] 以在 [log4net.Appender.ConsoleAppender]


若要使 appender 日志具有不同级别,请使用筛选器

以下示例显示了如何将 配置为仅记录错误。ApplicationInsightAppender

<appender name="ApplicationInsightAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender">
  <filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="ERROR" />
    <levelMax value="FATAL" />
  </filter>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%utcdate [%thread] %-5level %logger - %message%newline"/>
  </layout>       
</appender>

完整示例,记录所有消息和唯一的从错误开始。ConsoleAppenderApplicationInsightAppender

<log4net>
  <root>
    <level value="DEBUG"/>
    <appender-ref ref="ConsoleAppender" />
    <appender-ref ref="ApplicationInsightAppender" />
  </root>

  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%utcdate [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>

  <appender name="ApplicationInsightAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender">
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="ERROR" />
      <levelMax value="FATAL" />
    </filter>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%utcdate [%thread] %-5level %logger - %message%newline"/>
    </layout>       
  </appender>
</log4net>