2013-03-11 2 views
0

Здравствуйте, я работаю над серверным приложением, которое имеет многопоточность с формой панели управления и консолью для вывода. Я использую вывод журнала с помощью консоли. Для включения журнала я компилирую версию с журналом и для отключения журнала компилирую версию без журнала. Это обрабатывается, поскольку я использую весь код между строками.enable disable опция вывода консоли в многопоточных приложениях

#if Enable_DEBUG_ECHO 
Console.WriteLine("Something is happening"); 
#endif 

, так что я, если использовать #define Enable_DEBUG_ECHO поверх файл компилирует для эха. Но я хочу реализовать опцию, по которой пользователь может включать/отключать журнал одним кликом или что-то в этом роде. Кто-то дает мне идею, как я могу это сделать.

+1

'BOOL logEnabled = истина/false' затем' если (logEnabled) ... ' –

+0

Посмотрите на [' log4net'] (http://sourceforge.net/projects/log4net/) библиотека. – Leri

ответ

1

Вы можете использовать каркас регистрации, такой как NLog или log4net, что делает все это так просто. Вы можете настроить их программно или через файлы конфигурации.

2

Вы знаете, что когда вы используете прекомпиляционные параметры (например, ваш код), программа содержит только код «версия» кода (я имею в виду, что если вы определяете Enable_DEBUG_ECHO, строка «Console.WriteLine» («Что-то есть происходит »);« будет включен в dll результатов, но он не будет включен, если вы не определяете Enable_DEBUG_ECHO).

Так что, если вы хотите включить/отключить свой журнал во время выполнения, u должен создать ваш журнал без прекомпиляционных параметров.

Так что вам нужно сохранить переменную «включить/выключить» в файле конфигурации. И чем

if (VARIABLE_FROM_CONFIG) 
{ 
Console.WriteLine("Something is happening"); 
} 
Смежные вопросы