前几天,一位同事创建了一个简单的界面来报告错误/消息
public interface IErrorReporter
{
void ReportError(string title, string message, string detail);
}
目标是保持较低级别的“业务逻辑”代码不受MessageBox.Show()
等用户界面的影响。
我的反应是 已经“在那里”来帮助解决这个问题,但我找不到任何东西。请注意,我不是在寻找一个奇特的错误报告,异常处理机制;只是“开箱即用”的东西,以避免/减少创建/实现我自己的界面。
自定义跟踪侦听器看起来像一个替代方案,但System.Diagnostics.Trace
只是感觉不是MessageBox.Show()
的正确替代方案。使用第三方解决方案(例如 log4net )对于四行来说似乎有点过分。
答案 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将消息记录到数据库,文件,事件日志等。