从Log4net的API文档中不难看出,其实Log4net的开发过程还是蛮简单的,并没有想象中的那么复杂,而且在使用时只需要添加相应的配置节信息然后调用存储方法即可实现日志的存储,具体的结构如下图
上图显示了Log4net的主要由五个部分组成,分别为Logger,Appenders, Filters, Layouts 和Object Renders,其中最主要的Appender命名空间中封装了日志的存储方式,也就是说通过配置Appender能够将日志输出到执行的类型中;Layout其实是封装了数据显示的格式,通过配置Layout能够输出指定模板的数据信息,它还可以控制数据的输出类型(输出xml还是文本类型);Object Renders很重要,它能够控制数据的自定义输出,log4net将会按照用户定义的标准输出日志。
log4net有多重存储级别,按照日志信息的情况大致分为了5类,它们分别是Error错误日志、Fatal严重错误日志、Info一般信息日志、Debug调试信息日志和Warn警告信息日志,在日志管理时可以按照日志的级别来考虑存放的方式,对于严重日志往往是系统的重大问题,此时可以考虑存到服务器数据库中,其它的一些日志可以考虑存储到文件中,可以提高服务器性能。接下来将会介绍它的几种使用方法。
把日志输出到数据库中也是很多系统经常使用的日志存储方法,在小数据量的处理过程中将日志保存到数据库中是可行的,但是如果需要处理的日志数据量较大那么这种存储方法就会降低数据库的性能,所以在存储日志时慎重使用这种方式,建议涉及到系统重大问题时采用此种存储方式,这样会提升数据库的性能。具体配置如下:
[html] view plain copy <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender"> <bufferSize value="1"></bufferSize> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <connectionString value="Data Source=.;Initial Catalog=Test;Integrated Security=True;Pooling=False" /> <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" /> <parameter> <parameterName value="@log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.PatternLayout" value="