2011-12-15 15 views
0

ログメッセージの重大度に応じて、異なるコンソールの色を設定したいと思います。私はlog4netログ、デバッグ、情報、エラーにフックできますか?

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

のようなものが何とか

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

をしたいと思う

はこのようなものを行うには、コンソールロガーをフックする簡単な方法はありますか?

+1

私は –

+0

...私はよく覚えている場合log4netのはすでに、coloredConsolアペンダを持っていると思う...と、そうでない場合は、あなたの答えがあります:作成どこにどのようにログを記録するあなたのアペンダー。 – Jay

+3

色を扱うコンソールアペンダーがあります:[ColoredConsoleAppender](http://logging.apache.org/log4net/release/config-examples.html#coloredconsoleappender)。 – adrianbanks

答えて

3

まずはい、log4netのは、それが独自のカラー・ログ・アダプターです提供:

我々は両方のSTDへの出力を可能にするために2つのアペンダの設定を使用します。アウトと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> 
+0

'ColoredConsoleAppender'は私が探していたものでした。ありがとう! – bevacqua

+0

ニースは、エラーのために ''を使うことができます。 – Wernight

関連する問題