简体   繁体   English

我可以连接到log4net日志,调试,信息和错误吗?

[英]Can I hook to log4net Log, Debug, Info, and Error?

I want to set different console colors depending on the severity of the logged message. 我想根据所记录消息的严重性设置不同的控制台颜色。

I would want something like 我想要类似的东西

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

to somehow do 以某种方式去做

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

Is there an easy way to hook the console logger to do stuff like this? 有没有一种简单的方法可以挂接到控制台记录器以执行类似的操作?

First yes, log4Net provides it's own color log adapter: 首先,log4Net提供了它自己的彩色日志适配器:

We use two appender configurations to enable output to both std:out and std:err 我们使用两种附加程序配置来启用对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>

If you still want to hand-code the output, use an ILog implementation. 如果仍要手工编码输出,请使用ILog实现。 It basically gives you methods for each type of output. 它基本上为您提供了每种输出类型的方法。 To bind your custom adapter you create the configuration section like this... 要绑定您的自定义适配器,您可以像这样创建配置部分...

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM