2016-08-03 11 views
-1

の設定私は他のメッセージの数百との混合Visual Studioの出力ウィンドウにはない別のコンソールウィンドウでリアルタイムで見ることができますlog4netのビューアを探しています。私が見log4netの着色コンソールが簡単に

ManagedColoredConsoleAppenderと箱のうちColoredConsoleAppenderが、出力は外部のコンソールウィンドウに向けられるために取得する方法がわからないがあります。理想的には、コンソールウィンドウをデバッグするときに起動されますが、必須ではありません。

私はOutputDebuggerを使用していますが、この作業をすべて簡単に行う方法はありませんでした。

誰かがこれをすべて手に入れてすぐに作業する方法を分かち合うことができれば、大いに感謝するだろう。

これは主にローカルでの開発に使用されますが、ステージングやqaからのエラーをマシン上の小さなウィンドウにリダイレクトすると、リアルタイムで何が起こっているのかを知ることができます。

答えて

0

ColoredConsoleAppender(およびその後継のManagedColoredConsoleAppender)はコンソールを起動しません。

ただし、手動でコンソールを起動した場合、彼らはそれを使用します - ここのサンプルです:

class Program { 

    [DllImport("kernel32.dll", EntryPoint = "GetStdHandle", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 
    private static extern IntPtr GetStdHandle(int nStdHandle); 
    [DllImport("kernel32.dll", EntryPoint = "AllocConsole", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 
    private static extern int AllocConsole(); 
    private const int STD_OUTPUT_HANDLE = -11; 
    private const int MY_CODE_PAGE = 437; 

    private static readonly object lockObj = new object(); 
    static void Main(string[] args) { 

     AllocConsole(); 
     IntPtr stdHandle = GetStdHandle(STD_OUTPUT_HANDLE); 
     SafeFileHandle safeFileHandle = new SafeFileHandle(stdHandle, true); 
     FileStream fileStream = new FileStream(safeFileHandle, FileAccess.Write); 
     Encoding encoding = Encoding.GetEncoding(MY_CODE_PAGE); 
     StreamWriter standardOutput = new StreamWriter(fileStream, encoding) { AutoFlush = true }; 
     Console.SetOut(standardOutput); 

     XmlConfigurator.Configure(); 

     var log = LogManager.GetLogger("test"); 
     log.Debug("Starting Program"); 
     log.Error("Oh no, an error"); 
     // etc 

これが出力されます。

enter image description here

設定は本当に簡単です:

<log4net> 
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> 
    <mapping> 
    <level value="ERROR" /> 
    <foreColor value="White" /> 
    <backColor value="Red, HighIntensity" /> 
    </mapping> 
    <mapping> 
    <level value="DEBUG" /> 
    <backColor value="Green" /> 
    </mapping> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
</appender> 
<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="ColoredConsoleAppender" /> 
</root>