Presmerovanie Trace a Debug výpisov na Consolu
Zrejme všetci trochu otrelí vývojári v tej či onej miere využívame pri vývoji aplikácií Trace a Debug machanizmus na sledovanie udalostí v aplikácií. Občas si napíšeme malú testovaciu consolovú aplikáciu a radi by sme možno sledovali výpisy priamo v Console :-).
1. Prvou možnosťou je pridať ConsoleTraceListener cez App.Config. Hodnota atribútu initializeData je posunutá do konštruktora ConsoleTraceListener-a hovorí o presmerovaní výstupu na Console.Error stream.
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="configConsoleListener"
type="System.Diagnostics.ConsoleTraceListener"
initializeData="true"/>
</listeners>
</trace>
</system.diagnostics>
2. Programovo dosiahneme to isté správanie priamym zaregistrovaním ConsoleTraceListener-a medzi Trace listners.
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace AspNet
{
class Program
{
static void Main(string[] args)
{
using (ConsoleTraceListener listner = new ConsoleTraceListener(true))
{
Trace.Listeners.Add(listner);
Trace.WriteLine("test");
}
Console.ReadKey(true);
}
}
}
3. Prípadne prostredníctvom TextWriterTraceListener-a s výstupom presmerovaným na Console.Out alebo Console.Error
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace AspNet
{
class Program
{
static void Main(string[] args)
{
using (TextWriterTraceListener listener = new TextWriterTraceListener(Console.Out))
{
Trace.Listeners.Add(listener);
Trace.WriteLine("Test");
}
Console.ReadKey(true);
}
}
}