使用C#类库中的事件实现日志记录功能 - 这是一种很好的做法吗?

时间:2013-11-19 13:07:28

标签: c# events logging event-based-programming

我面临着在我的C#类库中记录实现的挑战,这是一个域模型。我的主要目标是将记录功能保持为规范和尽可能分离。通常,日志消息将被写入文件,并可能在调试时输出窗口。

目前我使用log4net,我编写了一个静态Logger类,它自己实现了日志记录方法。因此,当执行域对象中的方法时,它们会调用静态Logger.Log()方法。

虽然这种包装足以缓解我的纯粹冲动,但我想知道通过事件实现所有这些日志记录调用是否是一个好主意,并且完全从类库中删除日志记录实现细节。然后,客户端代码可以选择监听它们并从某些LogEventArgs中提取有用的信息。

所以问题是:

  

基于事件的日志记录,特别是在类库中,是不是一个好主意?为什么?

感谢阅读。

1 个答案:

答案 0 :(得分:3)

使用事件进行日志记录也会引入大量内存泄漏的可能性!

我会使用依赖注入来解决日志等问题。

使用DI你可以注射它,或者使用拦截。