2010-01-07 2 views
5

Я хочу, чтобы иметь возможность записывать записи в консольное приложение, которое будет описывать, когда действия были завершены, возможно, записывая их в .txt-файл в какой-то момент.Простая отладка и ведение журнала с использованием System.Diagnostics

Я бы хотел, чтобы он использовался с отдельным графическим приложением, работающим одновременно, поэтому я могу использовать приложение и контролировать журнал одновременно.

Я только предполагаю, что класс Diagnostic является правильным инструментом для использования, но я никогда не использовал какие-либо методы ведения журнала раньше, поэтому я приветствую любые другие предложения.

Благодаря

ответ

8

Посмотрите на System.Diagnostics.Trace. Вы можете добавить к нему разные TraceListeners, включая слушатели для Консоли или файлов. Затем замените все вызовы Console.Write()/Console.WriteLine() с помощью Trace.Write()/Trace.WriteLine(), и вы хороши. Вы даже можете реализовать свой собственный TraceListener (это очень просто), чтобы отправлять сообщения в свое графическое приложение.

+1

Кроме того, вы можете использовать System.Diagnostics.Debug для выполнения трассировки, которая включена только при выполнении отладочной компиляции (технически всякий раз, когда установлена ​​константа компилятора DEBUG). –

+0

Thankyou Joel, есть ли какое-нибудь конкретное место, где я могу узнать больше о том, как его использовать? Нечто простое, как базовое учебное пособие, было бы здорово. –

+1

Это вряд ли стоит проблемы: это просто изменение Console.Write() в Trace.Write() и, возможно, добавление system.diagnostics с использованием ссылки. –

2

Используйте DebugView из SysInternals для записи выходных данных отладки. Это отдельное графическое приложение, которое отображает вывод трассировки/отладки.

Этот пост, Using DebugView and C#, показывает пример.

1

Я рекомендую вам как можно скорее использовать log4net; это довольно тривиально для использования (хотя настройка немного сложна, вам нужно сделать несколько записей конфигурации), и это может быть довольно красивая система.

+4

Почему бы не сравнить/сравните эту рекомендацию с рассмотрением апелляцией использования System.Diagnostics. Во-первых, вы получаете System.Diagnostics бесплатно; log4net - отдельная сборка. Кроме того, поскольку это часть BCL, скорее всего, разработчики .NET знают, как использовать System.Diagnostics, которые могут помочь в обслуживании проекта. –

+1

gWiz: Вы можете сделать это в своем собственном ответе :) Лично я не вижу смысла; на мой взгляд, нет никаких сомнений в том, что наилучшим подходом является log4net. Возможно, я мог бы подробно объяснить, почему, но я оставляю это как упражнение, которое можно сделать с помощью исследований. Не все должно быть передано людям вручную, и, конечно, у меня нет терпения сделать это. –

+0

Я использую/использовал nlog, но перешел на Azure. Вдруг все было не так просто, так как мне пришлось переосмыслить мою регистрацию файловой системы и войти в решение облачного хранилища, которое не было прямым. Мое мнение сейчас? В конце концов, диагностика системы не кажется таким глупым. –

3

Решение $ 0.25 - это Project + Properties, вкладка Application, Output type = Console Application. Теперь у вас есть консольное окно, а также ваш обычный пользовательский интерфейс. Все, что вы пишете с помощью Console.WriteLine(), попадет в это консольное окно.

+0

Мне нужно это сделать, если я последую за решением Джоэля Коэхорна? –

+0

Предложение Джоэла состоит в том, чтобы отслеживать файл, а не консоль. –

+0

Консоль будет чем-то, что я должен быть видимым, возможно ли объединить ваши и методы Джоэла? –

1

Вот мой, по общему признанию, эгоистичный ответ: используйте мой logging framework. В отличие от некоторых других фреймворков регистрации, он чрезвычайно прост в использовании и настройке. Он также имеет очень небольшую площадь. Кроме того, он поставляется с небольшим приложением, которое вы можете использовать для просмотра ваших журналов в режиме реального времени. Мне кажется, что это все, что вам нужно.

+0

Это звучит очень многообещающе, но есть и другие альтернативы, которые, прежде всего, бесплатны. –

+1

не является бесплатным: 5 долл. США не являются коммерческими, 49 долл. США за коммерческую лицензию. –

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