【问题标题】:Monitor running .net apps监控正在运行的 .net 应用程序
【发布时间】:2008-09-22 11:18:46
【问题描述】:

例如,我运行了一些需要监控的 .net 应用程序,然后在 App1 中调用 MethodA,我的监控应用程序应该检测到这一点。我有很多正在运行的应用程序,这里提出的解决方案是重新编译所有这些应用程序,并在我们想要监控的所需方法中包含一个新行。我只想在绝对没有办法的情况下这样做。那么有人做过这样的事情吗?基本上,我需要创建一个新应用程序,当我单击它上面的按钮时,它会告诉我:MethodA 在 App1 中被实时调用...

谢谢!

【问题讨论】:

    标签: .net monitoring


    【解决方案1】:

    有几种方法可以做到这一点。一种是使用 log4Net,通过调用 log4Net 的 write 方法“散布”您的方法。您可以选择各种日志记录附加程序(目的地),例如电子邮件或数据库,但一个鲜为人知的技巧是下载独立程序 DebugView(SysInternals -> 现在是 Microsoft),它会侦听默认消息。

    【讨论】:

    • 听起来@Bruno 想要记录。他应该使用 log4net 并从 apache 获取一份 Chainsaw 副本。 app.config 中的 UdpAppender 突然间您可以实时查看所有日志记录。太棒了。
    【解决方案2】:

    PostSharp的传递方式,如何编辑编译的.net代码。编辑是用编译(属性)或配置代码的 C# 代码编写的。他们有一种机制,可以记录(或填充或其他任何东西)方法/事件调用等等。

    我想,这是你需要的工具。

    【讨论】:

      【解决方案3】:

      System.Diagnostics.PerformanceCounter 是一个很好的起点。您可以创建可以在性能控制面板小程序中查看的新计数器。一开始它们有点令人困惑,但是当您意识到平均计数器需要两个组件来计算百分比时,它会变得容易得多。

      【讨论】:

        【解决方案4】:

        我不知道 .NET 是否有匹配机制,但是 Java 允许您指定一个代理 JAR 文件,即在加载每个类时通知/调用的类。然后,通过仪器/字节码操作,您可以拦截此类方法调用。也许您可以在 .NET 中以某种方式替换类加载器。不确定。

        【讨论】:

        • 我很确定你可以这样做;但我相信你必须从非托管代码中做到这一点。
        【解决方案5】:

        反射是您在 .NET 中寻找的东西,但我不确定您想要做什么背后的实现细节。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-04
          • 1970-01-01
          • 2021-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多