I坐标

博客园 首页 新随笔 联系 订阅 管理

Repository

 log4net的第二个组件是Repository。这个组件用于维护和组织Logger。

正如我们前面的文章说到的,log4net采用类似命名空间的层次结构组织和管理Logger。目前对于Repository的层次结构定义在log4net.Repository.Hierarchy命名空间下。

要实现Repository,需要实现log4net.Repository.ILoggerRepository接口。不过,可以使用另一个类log4net.Repository.LoggerRepositorySkeleton来代替上面的接口,作为基类。

如果你只是使用log4net而不是扩展log4net,那么你可能不会用到任何Repository的类。

当然,你需要使用LogManager类来自动化管理Repositories和Loggers。

Appender

任何一个好的日志框架都应该支持为不同的目的生成不同的输出,例如将跟踪内容输出到控制台,或者序列化到一个日志文件中。log4net完美的实现了这样的功能。log4net使用名为Appender的组件来定义输出的方法。正如其名,这个组件将自己附加到Logger组件上,并把Logger的输出传递到一个输出流上。你可以附加多个Appender到一个Logger上。当然,

log4net已经准备好了几个Appender,这些Appender可以在Log4net概貌上可以看到。

当然,这些已有的Appender可能并不满足你的应用需求,所以你可以自己写一个Appender,你只需要继承log4net.Appender.AppenderSkeleton类。这个类负责适配你的自定义类和IAppender接口。

Appender Filters

默认情况下,一个Appender将会把所有的记录的事件传递给Layout。Appender Filters能被用来依据某些策略过滤传递的事件。在log4net.Filter命名空间下,log4net已经定义了几个filters。通过使用这些filter,你既能过滤掉某个范围的值,也能过滤掉指定的字符串。

Layout

Layout组件用来向用户显示最终格式化的输出数据。依据使用不同的Layout,输出数据可以用多种格式显示,例如线性文件或是XML文件。Layout组件和Appender一起搭配工作。

在API文档中我们可以看到一些不同的Layout。对于一个Appender,你只能使用一个Layout。

如果你要创建自己的Layout,你需要继承log4net.Layout.LayoutSkeleton类。这个类实现了ILayout接口。

posted on 2004-10-05 23:09  I坐标  阅读(1860)  评论(2编辑  收藏  举报