有没有一种简单的方法可以在运行时隐藏/显示Console.WriteLines?

时间:2019-03-14 07:32:19

标签: c#

问题:是否存在一种简单的方法来隐藏/显示Console.WriteLine,在运行项目时在项目中创建?

这些Console.WriteLines用于在调试时向我提供信息,但是当我的老师运行代码时,它们应该被隐藏。

我试图创建一个新的项目库(.NET Framework 4.7.2),其他项目可以引用该库:

//=========================== SCOPE ===========================
//   Help the programmer to show/hide Console.WriteLines
//=============================================================

// TODO: Add verbose-levels

using System;

namespace Information
{
    public static class Verbose
    {
        public static bool On { get; set; }
    }
}

以及在另一个项目中时的外观:

using Information;

...

if (Verbose.On) { Console.WriteLine("Text here!"); }

2 个答案:

答案 0 :(得分:5)

我相信您应该为此使用System.Diagnostic设置。

您可以在下面的配置部分添加并添加控制台侦听器。

<configuration>
    <system.diagnostics>
        <sources>
            <source name="primes" switchValue="All">
                <listeners>
                    <add name="console" type="System.Diagnostics.ConsoleTraceListener" />
                </listeners>
            </source>
        </sources>
    </system.diagnostics>
</configuration>

然后使用Trace.WriteLines将跟踪输出重定向到控制台。

请注意,switchValue属性控制应将哪些语句记录到控制台。如果其值设置为关闭,则不会在控制台上记录任何内容。

在C#代码中,您可以像下面这样实例化:

TraceSource _source = new TraceSource();

然后在编写日志语句时,可以如下设置跟踪级别:

_source.TraceEvent(TraceEventType.Information, 0, "statement to be logged");

您可以了解更多about log levels at this MSDN page.

find examples at this MSDN页面。

答案 1 :(得分:2)

您在这里有很多选择:

  • 快速方法:我假设您正在做一个快速简单的作业,我会按照Damien_The_Unbeliever的建议使用Debug.WriteLine。仅在调试期间,输出将位于“输出”窗口中。或者,您可以使用#if directive

  • 使用Trace and Trace Listener进行正确的跟踪。

  • 矫kill过正的方式:使用NLoglog4net之类的日志记录框架。