ABP使用Castle日志记录工具,并且可以使用不同的日志类库,比如:Log4Net, NLog, Serilog... 等等。对于所有的日志类库,Castle提供了一个通用的接口来实现,我们可以很方便的处理各种特殊的日志库,而且当业务需要的时候,很容易替换日志组件。
Logger功能模块涉及到的接口和类不多,相对容易理解。
LogSeverity: 枚举类型,定义了5个日志级别:Info,Debug,Warn,Error, Fatal.
IHasLogSeverity:封装了LogSeverity。UserFriendlyException,AbpValidationException实现了这个接口。Loghelper在对exeption做log的时候可以方便的通过实现了IHasLogSeverity的exeption的实例获取到logSeverity。然后根据logSeverity的级别log.
Loghelper: 静态类。调用logger实例(实现Castle的Ilogger接口)完成log操作。
LoggerExtensions: 扩展了Castle的Ilogger接口的方法,封装更便捷的方法供Loghelper调用。
在具体的web项目的application_start方法中注入logger实例。以下是注入log4net代码