【问题标题】:Proper Way to Handle Verbose Console Output in C#在 C# 中处理详细控制台输出的正确方法
【发布时间】:2011-12-03 02:50:59
【问题描述】:

当我开发一个程序时,我经常会抛出一些 console.writeline 语句来让我知道应用程序在调试期间正在做什么。我经常发现自己删除它们并重新添加它们以保持代码清洁。我还没有找到一种看似有效的方法将这些优雅地放入代码中。

我想知道其他人做了什么,或者什么被认为是最好的做法。我不确定是否可以使用跟踪,因为我没有在安装了 Visual Studio 的计算机上进行调试(我要发布到的服务器没有它)。

是否有任何基于 AOP 的方法来攻击这个?理想情况下,我不希望在生产代码中输出,因为写入控制台似乎会减慢应用程序的速度。

提前致谢!

【问题讨论】:

    标签: c# logging console cmd


    【解决方案1】:

    有许多用于退出的选项。 MS 企业库和 log4net 是两个非常流行的选项。在每一个中,您都可以通过配置文件控制日志记录的级别,以便在 dev 中您可以进行非常详细的日志记录,但在 prod 中您可以抑制除错误之外的所有内容 - 所有这些都无需更改代码。

    此外,如果您需要调试生产问题,只需更改配置设置即可在生产中启用详细日志记录。

    【讨论】:

      【解决方案2】:

      Microsoft 的 Enterprise Library 的 Logging Application Block 可能是一个选择。

      【讨论】:

        【解决方案3】:

        您是否尝试过仅在调试模式下编写?我相信正确的做法是这样的:

        #if DEBUG
          Console.WriteLine("Debug stuff here");
        #endif
        

        【讨论】:

        • 通常您希望在实时应用程序中打开调试以查找故障,而您不想在调试模式下重新部署应用程序。
        【解决方案4】:

        您是否考虑过使用Log4Net?它对您来说应该更加灵活。您可以在代码中留下大量日志记录,并根据执行时加载的配置打开或关闭它。

        【讨论】:

        • 您的代表让我想知道 SO 代码是否正确处理 1m 代表,因为您最终会到达那里 :)
        • 我过去看过,但会再试一次!谢谢!
        • 截至 2021 年 1 月 25 日,JS 的代表次数为 1235K,所以是的,所以确实可以处理 1M 代表,但我敢打赌,这是一个很长的整数 - 所以只有几十亿美元了
        猜你喜欢
        • 2023-03-06
        • 1970-01-01
        • 2022-12-08
        • 2013-05-29
        • 1970-01-01
        • 2018-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多