【问题标题】:Logging & Tracing记录和跟踪
【发布时间】:2015-01-10 16:22:25
【问题描述】:

如何向分析器添加跟踪和日志记录?您可能不知道我遇到了一个问题,即某些如何导致我的分析器在实验实例中工作,而不是在正常实例中工作。所以我正在考虑添加跟踪和日志记录,当我在正常实例中运行它时可以检查它们。

您对解决此问题有什么建议和建议? 我的桌面应用程序可以实现顶级异常处理程序,但是由于分析器是 Visual Studio 的独立“插件”模块,我可以在任何可以实现这种方法的地方看到。

我认为我可以使用 ETW(最初需要管理员权限才能创建事件源),但我担心这不适用于可移植类。

我试过了

Debug.Write
Console.Write

但是我在哪里可以看到 VS 中的输出?如果它确实输出文本,它(对我来说)会在其他输出文本的噪音中丢失。

输出到我的文档中的文件(没有管理员权限)可以,但是如何创建文件?

附加 可移植类的目标是

.NET Framework 4.5
Windows 8

【问题讨论】:

  • Debug.Write 将被写入immediate window
  • @Bjørn-RogerKringsjå debug.Write 不是在 Release 模式下跳过吗?
  • 发布配置使用Trace class
  • @HamletHakobyan 什么Trace Class?考虑到可移植类的目标,我可以使用它吗?
  • @AdamSpeight 是的,然后按照 Hamlet 的说明使用 Trace。输出到同一个窗口。

标签: c# vb.net logging roslyn trace


【解决方案1】:

通常使用跟踪侦听器将跟踪信息写入文件。在那里您可以在没有 VS 的情况下读取跟踪信息。一个很好的介绍在这里: MSDN: Tracing and Instrumenting Applications

还可以阅读有关如何使用跟踪侦听器的说明。你会发现你需要阅读很多,它相当复杂并且有几个限制。我发现最烦人的是,它对于近乎实时的跟踪来说太慢了,而且跟踪问题引起的异常会被抛出到跟踪调用者的线程上。这是人们想要的最后一件事,因为跟踪而获得异常。由于您的特殊需要,您可能会发现其他问题。

出于这些原因,我编写了自己的跟踪类,它可以与任何 .NET 技术一起使用。这是可靠的代码,我使用了多年。您可以在以下位置找到它并详细说明如何使用它: CodePlex: ACoreLib.Tracer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    相关资源
    最近更新 更多