2013-11-09 2 views
6

Следующая программа не печатает текст «Это трассировка». Нет app.config.System.Diagnostics.Trace, простейшая возможная программная конфигурация

Мой вопрос, как я могу изменить следующий код (и только код, а не какие-либо файлы конфигурации), такие, что сообщения, передаваемые в вызовах t.TraceEvent появится в окне консоли

using System; 
using System.Collections.Generic; 
using System.Diagnostics; 

namespace ConsoleApplication1 { 
    class Program { 
     static void Main(string[] args) { 
      Trace.Listeners.Add(
       new TextWriterTraceListener(Console.Out) 
      ); 

      TraceSource t = new TraceSource("Test"); 
      t.Listeners.AddRange(Trace.Listeners); 
      t.TraceEvent(TraceEventType.Critical, 1, "This is a trace"); 

      Console.Write("Press enter to quit"); 
      Console.ReadLine(); 
     } 
    } 
} 
+0

Если вы используете конфигурацию Release, определите символ TRACE. Или переключитесь на конфигурацию Debug. – groverboy

ответ

8

См Trace Listeners ,

DefaultTraceListener будет записывать в окно вывода. Чтобы отправлять сообщения в TraceListener, вам просто нужно позвонить Trace.WriteLine("my output string");.

// C# 
System.Diagnostics.Trace.Listeners.Clear(); 
System.Diagnostics.Trace.Listeners.Add( 
    new System.Diagnostics.TextWriterTraceListener(Console.Out)); 

EDIT: В ответ на ваш комментарий, следующий код выведет «мой выходной строки» непосредственно перед «Нажмите, чтобы выйти» в окне консоли:

static void Main(string[] args) 
    { 
    Trace.Listeners.Add(new TextWriterTraceListener(Console.Out)); 

    Trace.WriteLine("my output string"); 

    Console.Write("Press enter to quit"); 
    Console.ReadLine(); 
    } 

EDIT2: После перечитав ваш вопрос, я понял, что вы конкретно пытаетесь использовать TraceSource, и в этом случае вам просто нужно настроить коммутатор, чтобы он знал, какой уровень событий трассировки должен быть отправлен в окно консоли. Попробуйте добавить это после того, как вы добавите своих слушателей:

SourceSwitch sourceSwitch = new SourceSwitch("SourceSwitch", "Verbose"); 
t.Switch = sourceSwitch; 
+1

+1 добавлен код из связанной статьи. – kenny

+0

Спасибо, ребята за ваше время, ваш ответ не отвечает на мой точный вопрос, а именно, как я могу изменить код, который я опубликовал, чтобы сообщения, переданные в вызовах t.TraceEvent, появлялись в окне консоли – 628426

+1

@ 628426, см. Мое редактирование выше. –

Смежные вопросы