【问题标题】:Can I hook to log4net Log, Debug, Info, and Error?我可以挂钩到 log4net 日志、调试、信息和错误吗?
【发布时间】:2011-12-16 01:32:46
【问题描述】:

我想根据记录的消息的严重性设置不同的控制台颜色。

我想要类似的东西

_log.Error("Expected exception",e);

以某种方式做

Console.PushColor(ConsoleColor.DarkRed);
_log.Error("Expected exception",e);
Console.PopColor();

有没有一种简单的方法可以让控制台记录器执行此类操作?

【问题讨论】:

  • 我认为 Log4Net 已经有一个 colouredConsol appender,如果我没记错的话......
  • 它确实有一个处理颜色的控制台附加程序:ColoredConsoleAppender

标签: c# console log4net


【解决方案1】:

首先是的,log4Net 提供了它自己的颜色日志适配器:

我们使用两个附加配置来启用输出到 std:out 和 std:err

<log4net  xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <root>
    <level value="ALL" />
    <appender-ref ref="console.out" />
    <appender-ref ref="console.error" />
  </root>

  <appender name="console.out" type="log4net.Appender.ColoredConsoleAppender">
    <target value="Console.Out" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="DEBUG"/><!-- "DEBUG" OR "INFO" if you want to display these -->
      <levelMax value="INFO"/>
    </filter>
    <mapping>
      <level value="INFO"/>
      <foreColor value="White, HighIntensity"/>
    </mapping>
    <mapping>
      <level value="DEBUG"/>
      <foreColor value="White"/>
    </mapping>
  </appender>

  <appender name="console.error" type="log4net.Appender.ColoredConsoleAppender">
    <target value="Console.Error" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="WARN"/>
      <levelMax value="FATAL"/>
    </filter>
    <mapping>
      <level value="FATAL"/>
      <foreColor value="Yellow, HighIntensity"/>
      <backColor value="Red"/>
    </mapping>
    <mapping>
      <level value="ERROR"/>
      <foreColor value="Red, HighIntensity"/>
    </mapping>
    <mapping>
      <level value="WARN"/>
      <foreColor value="Yellow, HighIntensity"/>
    </mapping>
  </appender>

</log4net>

如果您仍想手动编码输出,请使用ILog 实现。它基本上为您提供了每种输出类型的方法。要绑定您的自定义适配器,您可以像这样创建配置部分...

<appender name="name" type="NameSpace.ClassOfTypeILog, AssemblyName">
    ...
</appender>

【讨论】:

  • 很好,可以使用&lt;threshold value="WARN"&gt; 来解决错误。
猜你喜欢
  • 2023-03-06
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多