首页 > 代码库 > 【.NET】log4net配置文件解析

【.NET】log4net配置文件解析

       

          Log4Net是一个开源日志记录组件,将log4net.dll引入到项目References中,通过它可以将.net应用程序的日志记录到多种介质之中,并且我们还可以设置和标示日志的级别等。


        然后我们从配置文件入手,我们可以将配置写在web.config,也可以写到一个单独的配置文件中,可以命名为log4net.config.使用log4net需要知道其中两个比较重要的概念:logger 和 appender。logger是日志记录对象,后者是日志记录的目标也就是控制台,文件,数据库等。使用时,先获得一个用来记录日志的工具对象logger,然后为logger对象指定日志的记录位置.这就是配置文件为我们做好的事.


先看一个我写好的配置.


技术分享

       

       我将配置文件写在了一个单独的文件中,这样有两点好处:

           l 不需要重新编译源代码就能改变配置; 

        2 可以在程序正运行的时候就改变配置。(这一点在一些Web程序和远程过程调用的程序中很重要)


          后来因为我们的ITOO项目太大,这样写配置文件需要多个子系统分别维护,我就把做的这部分放到了资源文件中,和项目一起打包成dll,统一让各系统引用.这样一来改变配置文件需要重新引用,不过比起多方维护,更能减少出错.

         我在这里配置了多个logger,各系统调用时传来不同的参数,loggerName,就可以实现每个系统的异常将被写入到单独的文件中或数据库表中.

如 


1.将异常日志写到文件

<!--权限系统-->
    <logger name="AuthoritySystem">
      <level value=http://www.mamicode.com/"ALL"/>>



log4net.Layout.PatternLayout中的转换模式在上面的文件中作了解释,(ConversionPattern)  

%m(message):输出的日志消息,如ILog.Debug(?)输出的一条消息  

%n(new line):换行  

%d(datetime):输出当前语句运行的时刻  

%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数  

%t(thread id):当前语句所在的线程ID  

%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN?等

  %c(class):当前日志对象的名称 

 

2.将操作日志写入到数据库


<!--权限系统-->
    <logger name="AuthoritySystem">
      <level value=http://www.mamicode.com/"Info"/>>

        Log4net默认数据表中有Datetime,Thread,Log_Level,Logger,Message这五个字段,我的数据库名为Log,表名为各系统名,按照系统日志记录要求,又加了id,userid,username,ip,clazz,method,result几个字段.数据表结构现在是12个字段,提前在数据库定义.

 

<bufferSizevalue=http://www.mamicode.com/"1"/>

该属性设置缓存区大小, 1表明有1条日志就写入数据库, 如果是10就表示日志到达10条时一起写入.

 

          Log4net使用过程中关于配置文件的内容就先写到这里,更多内容下一篇博客

<<Log4net将操作日志写入数据库>>  敬请期待.



【.NET】log4net配置文件解析