【问题标题】:Set logging level for specific exception in Log4Net (for Episerver)为 Log4Net 中的特定异常设置日志记录级别(用于 Episerver)
【发布时间】:2016-08-23 07:00:00
【问题描述】:

如何为Log4Net 中的特定异常配置日志记录级别?

我们的应用程序当前正在生成多个 WebSocketException,处于 WARNING 日志记录级别。但是,我们希望将 if 从 WARNING 更改为 INFO 以使我们的日志更具可读性。

应用程序正在使用EPiServer Log4Net 包,但配置应该相同。

这是否可以从 Log4Net 配置为从 .config 文件执行,还是必须在代码中处理它?

【问题讨论】:

  • 您能否澄清一下 - 您是否想更改您的记录器设置,以便它也 包含 INFO(“将其设置为 INFO”),但这会使它 可读性较差。或者,您是否想更改您的日志,以便它们输出为 info 而不是 警告(因此被排除,因为 config 仅是警告)?
  • 您不能通过配置更改日志的输出(从警告到信息),这需要更改代码。但是,您可以从输出中排除日志 - 但是日志通常在类级别生成,而不是为每种异常类型生成不同的记录器。虽然 log4net 确实有一个很好的类层次结构(例如,您可以在命名空间或类级别切换) - 这一切都取决于代码中记录器的名称。
  • EPiServerLog.config 中的 log4net 配置没有特定于 Episerver 的内容,因此适用标准文档:logging.apache.org/log4net/release/manual/configuration.html
  • @freedomn-m,我确实想更改日志级别从警告到信息。此外,我还打算通过 .config 文件执行此操作,正如您所指出的,这是不可能的。如果你写你的评论作为答案,我会接受它,除非其他人有更好的建议。
  • 我相信你对 WebSocketExceptions 不是很感兴趣,那么为什么不使用 log4net.Filter.StringMatchFilter 过滤掉它们呢?

标签: c# asp.net-mvc logging log4net episerver


【解决方案1】:

只过滤掉你不想要的任何条目,因为 WebSocketExceptions 不是很有趣:

<filter type="log4net.Filter.StringMatchFilter">
  <stringToMatch value="WebSocketException" />
  <acceptOnMatch value="false" />
</filter>

注意:Log4Net 在使用 StringMatchFilter 时使用 indexof,因此可以查找部分字符串。请记住它是区分大小写的。

【讨论】:

  • 这看起来很完美!我们将试一试,看看日志条目是否消失。 :)
【解决方案2】:

使用 Log4Net 这应该像使用信息而不是警告调用 ILog 一样简单。

Logger.Info("message");

而不是

Logger.warn("message");

根据您的设置,可能值得在您的 xml 中进行更改

<log4net> 
  <appender name="appenders_name">
  ... other settings
   <root>
       <level value="INFO" />
   </root>
  </appender>
</log4net>

【讨论】:

  • 问题推断这需要在配置中完成(如何配置日志记录级别)而不是代码(但不是那么清楚)
  • 我最初是在寻找一个 .config 设置来控制日志记录级别 - 因为现在更新的问题应该更好地反映。不过,谢谢你的回答。
猜你喜欢
  • 2011-01-08
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多