是否有标准的简单消息/错误报告机制?

时间:2010-09-15 15:45:43

标签: .net

前几天,一位同事创建了一个简单的界面来报告错误/消息

 public interface IErrorReporter
 {
  void ReportError(string title, string message, string detail);
 }

目标是保持较低级别的“业务逻辑”代码不受MessageBox.Show()等用户界面的影响。

我的反应是 已经“在那里”来帮助解决这个问题,但我找不到任何东西。请注意,我不是在寻找一个奇特的错误报告,异常处理机制;只是“开箱即用”的东西,以避免/减少创建/实现我自己的界面。

自定义跟踪侦听器看起来像一个替代方案,但System.Diagnostics.Trace只是感觉不是MessageBox.Show()的正确替代方案。使用第三方解决方案(例如 log4net )对于四行来说似乎有点过分。

2 个答案:

答案 0 :(得分:1)

您是否尝试过查看log4net?我尽可能地使用它并且喜欢它 - 它是完全可配置的,你可以编写自定义appender来执行像output to a dialog这样的事情,并且appender是通过配置文件配置的 - 所以你的“busines logic”代码只记录东西像错误/警告/信息,等等,你的配置说明如何处理这些信息。

从代码来看很简单:

logger.Debug("Debug stuff");
logger.Info("Info Stuff");
logger.Error("Error Stuff"); //or warn, or fatal

配置相当简单:

<configuration>
    <configSections>
        <section name="log4net" 
           type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <log4net>
        <appender name="LogFile" type="log4net.Appender.FileAppender">
            <param name="File" value="output.txt" />
            <param name="AppendToFile" value="true" />
            <layout type="log4net.Layout.PatternLayout">
                <param name="Header" value="[Header]\r\n" />
                <param name="Footer" value="[Footer]\r\n" />
                <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
            </layout>
        </appender>

        <!-- more appenders if you want -->

        <root>
            <level value="INFO" />
            <appender-ref ref="LogFile" />            
        </root>
    </log4net>
</configuration>

答案 1 :(得分:0)

为什么不扩展界面来包装log4net并只是相应地配置appender? NET SEND appender应该能够非常接近地模仿MessageBox.Show()功能,同时其他appender将消息记录到数据库,文件,事件日志等。