据我所知,System.Console
将默认写入stdout,但是System.Diagnostics.Trace
和System.Diagnostics.Debug
呢?默认行为是什么,它们是否可以以任何方式配置?
似乎不同的人(在互联网上)使用不同的东西,但我认为我发现的大多数东西都是错误的,因为每个东西都应该有特定的语义,对吧?如果是这样的话,是否有任何框架(如asp.net或wpf)特别使用这些工具?
还有最后一个问题,选择使用哪一个的经验法则是什么?
最佳答案
Debug
和Trace
都写到同一个位置,即Listeners
集合。默认情况下,它被路由到visual studio的调试窗口,但是当您不调试时,它会被you can put code in your app.config
file重定向到其他位置。Debug
和Trace
之间的区别在于Debug
中的所有方法只有在设置了编译符号(默认为debug打开,release关闭)时才会写出如果未设置符号,则在代码中永远不会调用这些方法。trace查找跟踪符号(debug和release的默认值均为on)。除此之外,这两个类是相同的。实际上,如果修改DEBUG
以添加新的侦听器,它也将修改Debug.Listeners
,因为两者都指向内部静态属性Trace.Listeners
至于选择使用哪一个,您希望诊断信息以发布和调试模式显示吗?使用跟踪,仅调试?使用调试。是否希望最终用户在不附加调试器的情况下看到它?使用控制台或添加控制台跟踪侦听器。