【问题标题】:C# Application loggerC# 应用程序记录器
【发布时间】:2010-11-28 11:41:14
【问题描述】:


有没有办法编写一个记录器,可以记录另一个用 c# 编写的程序中发生的异常?

【问题讨论】:

    标签: c# windows logging


    【解决方案1】:

    是的,但这并不容易。

    如果您在当前应用程序的AppDomain 中运行该应用程序,则相对容易。您所做的是属于该域,您附加到 UnhandledException 事件处理程序并以这种方式注册异常。

    但是,我怀疑您所指的 C# 应用程序在不同的进程中运行。在这种情况下,您仍然使用大致相同的机制,但实际上要获得AppDomain 要困难得多。这涉及托管 C++ 和在远程域中执行线程。您可以查看Can I inject a thread in a remote app domain from C#http://social.msdn.microsoft.com/Forums/en/winforms/thread/e4cfa5dd-e254-4088-8754-09dc40d4fb5b 了解更多信息。

    【讨论】:

      【解决方案2】:

      异常是一种严格存在于进程中的机制,所以不是。

      【讨论】:

      • 好吧,异常可以序列化,因此可以由不同的进程记录
      • 异常只能在进程内处理,但没有理由不能在不同的应用程序中记录它们。
      • 所有达到此目的的方法都要求引发异常的进程与记录异常的进程协作。在这种情况下,问题应该明确说明修改两个进程的代码是一种选择。
      【解决方案3】:

      发生异常时,您可以将异常详细信息发送到另一个负责记录异常的应用程序。您可以使用多种远程过程调用机制中的一种,例如可能使用 Web 服务或 Windows Communication Foundation (WCF)。

      这是Error Handling Extensions in WCF 的一个很好的例子。

      【讨论】:

        猜你喜欢
        • 2011-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多