2011-12-15 64 views
0

我想根據記錄的消息的嚴重程度設置不同的控制檯顏色。我可以掛鉤到log4net日誌,調試,信息和錯誤?

我希望像

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

以某種方式做

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

有一種簡單的方法來掛鉤控制檯記錄做這樣的東西?

+1

我覺得log4net的已經有一個coloredConsol添加器,如果我記得很清楚... – 2011-12-15 17:06:07

+0

...,如果沒有,有你的答案:創建你自己的appender記錄你想要的地方和方式。 – Jay 2011-12-15 17:07:25

回答

3

首先是,log4net的提供它自己的顏色日誌適配器:

我們用兩個附加目的地的配置,以使輸出到兩個標準:出和std:犯錯

<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> 
相關問題