在多线程应用程序中启用控制台输出的禁用选项

时间:2013-03-11 07:03:46

标签: c# console-application server-application

您好我正在使用多线程的服务器应用程序,它具有控制面板表单和输出控制台。我正在使用log by console输出。对于启用日志,我使用日志编译版本,对于禁用日志,我编译没有日志的版本。这是因为我使用所有代码都在行之间。

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

所以如果我在文件顶部使用#define Enable_DEBUG_ECHO,它会为echo编译。但我希望实现一个选项,用户可以通过单击或类似的方式启用/禁用日志。有人告诉我如何做到这一点。

2 个答案:

答案 0 :(得分:2)

你知道,当你使用预编译选项(比如你的代码)时,程序只包含代码一个'版本'的代码(我的意思是,如果你定义了Enable_DEBUG_ECHO,行'Console.WriteLine(“有些东西正在发生) “);'将包含在结果dll中,但如果您没有定义Enable_DEBUG_ECHO,则不会包含它。

因此,如果您想在运行时启用/禁用日志,则应该创建没有预编译选项的日志。

所以你需要在配置文件中保存'打开/关闭'变量。而不是

if (VARIABLE_FROM_CONFIG)
{
Console.WriteLine("Something is happening");
}

答案 1 :(得分:1)

您可以使用NLoglog4net之类的日志记录框架,这样可以轻松完成所有这些操作。您可以以编程方式或通过配置文件配置它们。