我面临着在我的C#类库中记录实现的挑战,这是一个域模型。我的主要目标是将记录功能保持为规范和尽可能分离。通常,日志消息将被写入文件,并可能在调试时输出窗口。
目前我使用log4net,我编写了一个静态Logger
类,它自己实现了日志记录方法。因此,当执行域对象中的方法时,它们会调用静态Logger.Log()
方法。
虽然这种包装足以缓解我的纯粹冲动,但我想知道通过事件实现所有这些日志记录调用是否是一个好主意,并且完全从类库中删除日志记录实现细节。然后,客户端代码可以选择监听它们并从某些LogEventArgs
中提取有用的信息。
所以问题是:
基于事件的日志记录,特别是在类库中,是不是一个好主意?为什么?
感谢阅读。
答案 0 :(得分:3)
使用事件进行日志记录也会引入大量内存泄漏的可能性!
我会使用依赖注入来解决日志等问题。
使用DI你可以注射它,或者使用拦截。