多附加器(文件和应用洞察)的配置文件设置,具有不同的日志级别。

huangapple go评论82阅读模式
英文:

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

问题

我有记录到文件和应用洞察的不同日志级别的要求。我有以下配置文件设置,它在文件和应用洞察中都以DEBUG级别记录日志。

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3. <configSections>
  4. <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  5. </configSections>
  6. <log4net>
  7. <root>
  8. <level value="DEBUG"/>
  9. <appender-ref ref="ConsoleAppender"/>
  10. </root>
  11. <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
  12. <level value="DEBUG" />
  13. <layout type="log4net.Layout.PatternLayout">
  14. <conversionPattern value="%utcdate [%thread] %-5level %logger - %message%newline" />
  15. </layout>
  16. </appender>
  17. <appender name="ApplicationInsightAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender">
  18. <level value="ERROR" />
  19. <layout type="log4net.Layout.PatternLayout">
  20. <conversionPattern value="%utcdate [%thread] %-5level %logger - %message%newline"/>
  21. </layout>
  22. </appender>
  23. <logger name ="appinsightlogger">
  24. <level value ="ERROR"></level>
  25. <appender-ref ref="ApplicationInsightAppender"/>
  26. </logger>
  27. </log4net>
  28. </configuration>

我还尝试将这两个附加程序注册到根元素下,如下所示:

  1. <root>
  2. <level value="DEBUG"/>
  3. <appender-ref ref="ConsoleAppender"/>
  4. <level value="ERROR"></level>
  5. <appender-ref ref="ApplicationInsightAppender"/>
  6. </root>

但仍然没有看到所需的结果。有人可以帮助吗?

英文:

I have requirement to log to file as well as app insight with different log levels. I have below config file setting which logs with DEBUG level in both file as well as app insight.

  1. &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
  2. &lt;configuration&gt;
  3. &lt;configSections&gt;
  4. &lt;section name=&quot;log4net&quot; type=&quot;log4net.Config.Log4NetConfigurationSectionHandler, log4net&quot; /&gt;
  5. &lt;/configSections&gt;
  6. &lt;log4net&gt;
  7. &lt;root&gt;
  8. &lt;level value=&quot;DEBUG&quot;/&gt;
  9. &lt;appender-ref ref=&quot;ConsoleAppender&quot;/&gt;
  10. &lt;/root&gt;
  11. &lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot;&gt;
  12. &lt;level value=&quot;DEBUG&quot; /&gt;
  13. &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
  14. &lt;conversionPattern value=&quot;%utcdate [%thread] %-5level %logger - %message%newline&quot; /&gt;
  15. &lt;/layout&gt;
  16. &lt;/appender&gt;
  17. &lt;appender name=&quot;ApplicationInsightAppender&quot; type=&quot;Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender&quot;&gt;
  18. &lt;level value=&quot;ERROR&quot; /&gt;
  19. &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
  20. &lt;conversionPattern value=&quot;%utcdate [%thread] %-5level %logger - %message%newline&quot;/&gt;
  21. &lt;/layout&gt;
  22. &lt;/appender&gt;
  23. &lt;logger name =&quot;appinsightlogger&quot;&gt;
  24. &lt;level value =&quot;ERROR&quot;&gt;&lt;/level&gt;
  25. &lt;appender-ref ref=&quot;ApplicationInsightAppender&quot;/&gt;
  26. &lt;/logger&gt;
  27. &lt;/log4net&gt;
  28. &lt;/configuration&gt;

I also tried registering both the appenders under root element like below

  1. &lt;root&gt;
  2. &lt;level value=&quot;DEBUG&quot;/&gt;
  3. &lt;appender-ref ref=&quot;ConsoleAppender&quot;/&gt;
  4. &lt;level value =&quot;ERROR&quot;&gt;&lt;/level&gt;
  5. &lt;appender-ref ref=&quot;ApplicationInsightAppender&quot;/&gt;
  6. &lt;/root&gt;

But still did not see required results. Can anyone help on this?

答案1

得分: 1

一个appender没有level属性。
Log4net通过下面的消息通知了这一点。

log4net:ERROR XmlHierarchyConfigurator: 无法找到属性[level]以设置[log4net.Appender.ConsoleAppender]上的对象

要使一个appender以不同的级别记录日志,请使用filter

下面的示例显示了如何配置ApplicationInsightAppender仅记录错误及更高级别的日志。

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

完整示例,使ConsoleAppender记录所有消息,而ApplicationInsightAppender只从错误级别开始记录。

  1. <log4net>
  2. <root>
  3. <level value="DEBUG"/>
  4. <appender-ref ref="ConsoleAppender" />
  5. <appender-ref ref="ApplicationInsightAppender" />
  6. </root>
  7. <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
  8. <layout type="log4net.Layout.PatternLayout">
  9. <conversionPattern value="%utcdate [%thread] %-5level %logger - %message%newline" />
  10. </layout>
  11. </appender>
  12. <appender name="ApplicationInsightAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender">
  13. <filter type="log4net.Filter.LevelRangeFilter">
  14. <levelMin value="ERROR" />
  15. <levelMax value="FATAL" />
  16. </filter>
  17. <layout type="log4net.Layout.PatternLayout">
  18. <conversionPattern value="%utcdate [%thread] %-5level %logger - %message%newline"/>
  19. </layout>
  20. </appender>
  21. </log4net>

请注意,这些是XML配置文件的示例,用于配置Log4net日志记录器。

英文:

An appender doesn't have a level property.
Log4net notifies about this with below message.

> log4net:ERROR XmlHierarchyConfigurator: Cannot find Property [level] to set object on [log4net.Appender.ConsoleAppender]


To have an appender log with a different level, use a filter.

Below example shows how to configure the ApplicationInsightAppender to only log errors and upwards.

  1. &lt;appender name=&quot;ApplicationInsightAppender&quot; type=&quot;Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender&quot;&gt;
  2. &lt;filter type=&quot;log4net.Filter.LevelRangeFilter&quot;&gt;
  3. &lt;levelMin value=&quot;ERROR&quot; /&gt;
  4. &lt;levelMax value=&quot;FATAL&quot; /&gt;
  5. &lt;/filter&gt;
  6. &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
  7. &lt;conversionPattern value=&quot;%utcdate [%thread] %-5level %logger - %message%newline&quot;/&gt;
  8. &lt;/layout&gt;
  9. &lt;/appender&gt;

Full example, having the ConsoleAppender log all messages and the ApplicationInsightAppender only starting from error.

  1. &lt;log4net&gt;
  2. &lt;root&gt;
  3. &lt;level value=&quot;DEBUG&quot;/&gt;
  4. &lt;appender-ref ref=&quot;ConsoleAppender&quot; /&gt;
  5. &lt;appender-ref ref=&quot;ApplicationInsightAppender&quot; /&gt;
  6. &lt;/root&gt;
  7. &lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot;&gt;
  8. &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
  9. &lt;conversionPattern value=&quot;%utcdate [%thread] %-5level %logger - %message%newline&quot; /&gt;
  10. &lt;/layout&gt;
  11. &lt;/appender&gt;
  12. &lt;appender name=&quot;ApplicationInsightAppender&quot; type=&quot;Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender&quot;&gt;
  13. &lt;filter type=&quot;log4net.Filter.LevelRangeFilter&quot;&gt;
  14. &lt;levelMin value=&quot;ERROR&quot; /&gt;
  15. &lt;levelMax value=&quot;FATAL&quot; /&gt;
  16. &lt;/filter&gt;
  17. &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
  18. &lt;conversionPattern value=&quot;%utcdate [%thread] %-5level %logger - %message%newline&quot;/&gt;
  19. &lt;/layout&gt;
  20. &lt;/appender&gt;
  21. &lt;/log4net&gt;
  22. </details>

huangapple
  • 本文由 发表于 2023年7月10日 18:33:06
  • 转载请务必保留本文链接:https://go.coder-hub.com/76652893.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定