3

对于当前使用 Castle 的Logging Facility和 log4net的应用程序,开始使用新的 .NET 4.5 EventSource类进行日志记录的最佳方式是什么。

最初我认为可能扩展 Castle 的 ILogger 接口以支持 EventSource 促进的更丰富的语义式日志记录(引发的问题),但现在我不太确定它们是否真的可以很好地协同工作。

我注意到语义日志记录应用程序块提供了一种使用 EventSource 的实现,但这当然不是使用 ILogger。

4

1 回答 1

2

如果您想迁移到一般的语义日志记录,而不仅仅是 SLAB 实现,您可能会发现迁移到Serilog更容易。(免责声明 - 我开始了这个项目,虽然它现在已经很成熟了)。

Serilog 实现与和朋友相同的语义日志记录概念EventSource,但使用您从 Castle 获得的经典“ILogger”风格的 API。

log.Information("The cart contains {CartSize} items", cart.Count);

此示例将调用的结构化属性CartSize与事件相关联,就像您将参数传递给EventSource方法一样。(您甚至可以使用经典{0}的数字格式说明符,并且仍然可以获得带有编号而不是命名属性的结构化事件!)

因为 API 是兼容的,所以将现有应用程序从一种风格ILogger迁移到另一种风格比将所有内容移植到EventSources. 有几种方法可以解决它,如果您决定选择它,我会留意任何后续问题。

于 2014-09-23T05:05:52.437 回答