【发布时间】:2019-06-18 15:38:42
【问题描述】:
我有一个 Prism WPF 应用程序在我部署它时未能加载它的一个模块(由于数据库问题)。在我的开发机器上,我可以在 Visual Studio 的输出窗口中看到相关异常被抛出(并且显然被 Prism 捕获和处理)。
我能够通过这样做解决眼前的问题:
public MyModuleViewConstructor()
{
try
{
// some startup work here
// ...
InitializeComponent();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "A System Error Occurred.");
}
}
这会暴露生产中的错误,以便我可以采取行动。但是我仍然想从正常操作过程中抛出的任何异常中获取消息,所以,本着 Prism 做事方式的精神,我这样做了:
public class Logger : ILoggerFacade
{
public void Log(string message, Category category, Priority priority)
{
using (StreamWriter s = File.AppendText("Log.txt"))
{
s.WriteLine(string.Format("{0}-{1}: {2}", DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss.ffff"), priority.ToString(), message));
s.Close();
}
}
}
并在 Bootstrapper 中注册:
class Bootstrapper : DryIocBootstrapper
{
private readonly Logger _logger = new Logger();
protected override ILoggerFacade CreateLogger()
{
return _logger;
}
}
这对于调试日志等普通日志条目非常有效。 但它仍然没有记录我的应用程序中抛出的任何异常。
如何让 Prism 在我的应用程序中记录抛出的异常?
【问题讨论】:
标签: c# wpf exception-handling prism prism-6