我正在使用MVVM模式编写WPF应用程序,并在选定位置使用Prism进行松散耦合,并且我希望在窗口中显示日志消息并将其写入文件。每个方向的消息子集可能不一样。
我想我应该通过EventAggregator
(观察者模式的MS-Prism实现)发布消息并订阅两个对象:一个更新LogWindowViewModel
,另一个使用Enterprise Library记录器记录。这是一个好主意还是我复制了已经实现过的东西?
答案 0 :(得分:2)
每个输出中日志消息不同的事实是限制因素。
Extending the block可能就足够了,定义CustomTraceListener
或ILogFilter
可能会对您有所帮助。这样可以避免使用EventAggregator
。
归结为谁知道记录的内容和位置。这些差异是否取决于日志记录引擎中的值,例如严重性?它们是由日志引擎的消费者驱动,因此与类本身紧密耦合?这些类型的问题将决定您的选择。
在依赖使用EventAggregator
之前,利用记录块中的扩展点将是我的首选。
答案 1 :(得分:0)
我认为一个想法很好。似乎没有那么多功能可以复制
答案 2 :(得分:0)
我使用Common.Logging作为数据收集器,过滤器和分配器,用于可比较的东西,并为我自己的处理和ui输出编写了一个自定义appender。