<log4net>
<!-- 错误日志类-->
<logger name="logerror">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<!-- 信息日志类 -->
<logger name="loginfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<!-- 错误日志附加介质-->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogError\\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="" />
<param name="MaxFileSize" value="" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />
<param name="RollingStyle" value="Date" />
<!--布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
<!-- 信息日志附加介质-->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogInfo\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="" />
<param name="MaxSizeRollBackups" value="" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />
<param name="RollingStyle" value="Date" />
<!-- 信息日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
</log4net>
复制代码
先不分析上面这段配置信息是什么意思。我们先来回想一下我们的日志类通常用来做什么,假设我们有一个库存管理系统,分为两大模块,一个是出库,一个是入库。我们可能想要出库的相关信息保存在某一个文件夹里面,入库的信息存在另一个文件夹里面。这样,我们通常的做法是用在日志类中不同的路径将日志写到不同位置,但是如果我们不单单想要写到日志文件中,而且想要将这些日志文件插入数据库呢?一般来讲,我们会再建立一些方法,来写到数据库。另外,正常日志信息和错误日志信息的布局,我们可能想要根据日志类型的不同,改变信息的布局,比如错误日志里面有异常信息的记录,正常日志里面就没有异常的记录。 总结地说,我们的日志类的需求通常就是:、能够按要求将日志写到不同的介质上(文件、数据库、邮件等);、能够根据日志类型的不同,写到不同的位置;、能根据信息的类型,改变日志的布局。 不得不说,想要写好一个日志记录类还是挺不容易的的,看是简单的需求要做好,也是需要下大工夫的。而这些在Log4Net中,只需要经过一些配置,就可以完成。如果你懒得写配置信息,也可以直接将上面的配置信息拷过去用。 配置文件中节点的解释 logger是负责日志的记录者,假设我们需要记录一些正常的运行时日志和出现异常时的错误日志,那么我们可以通过在配置文件当中添加两个Logger实现。
appender提供记录的介质,前面谈到,我们可能要同时将数据记录到文件和数据库中,我们可以简单地通过编写appender实现,而且Log4Net当中已经默认提供了一些常用的appender,我们可以简单地修改一些配置文件就实现同时向数据库和同时向文件中写入的功能。 layout负责把记入的内容格式化。其实就是决定日志文件要长什么样子。 Logger节点的解释 以错误日志类为例进行解释 <!-- 错误日志类-->
<logger name="logerror"> <!-- 日志类的名字-->
<level value="ALL" /> <!-- 定义记录的日志级别-->
<appender-ref ref="ErrorAppender" /><!-- 记录到什么介质中-->
</logger>
level定义记录的日志级别,就是说,你要记录哪个级别以上的日志,级别由高往低依次是: None
Fatal
ERROR
WARN
DEBUG
INFO
ALL
级别的定义要注意,如果你定义DEBUG,那么低于DEBUG级别以下的信息,将不会记入日志,啥意思呢?就是说,就算你在程序里,用log.info()来写入一个日志信息,可是你在配置中指定level为DEBUG,由于INFO级别低于DEBUG,所以,不会被记入日志.这样的处理非常灵活 appender-ref定义日志要写入到什么介质中中。上面例子中就是写入到ErrorAppender这个介质中,在ErrorAppender节点我们可以定义跟日志有关的要写入到什么地方,日志文件的格式是什么等信息。 appender节点的解释 以ErrorAppender为例 复制代码
<!-- 错误日志附加介质-->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
<param name="File" value="Log\\LogError\\" /> <!-- 输出到什么目录-->
<param name="AppendToFile" value="true" /><!-- 是否覆写到文件中-->
<param name="MaxSizeRollBackups" value="" /><!-- 备份文件的个数-->
<param name="MaxFileSize" value="10MB" /><!-- 单个日志文件最大的大小-->
<param name="StaticLogFileName" value="false" /><!-- 是否使用静态文件名-->
<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" /><!-- 日志文件名-->
<param name="RollingStyle" value="Date" />
<!--布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
复制代码
appender节点中,type=RollingFileAppender 的意思是将日志以回滚文件的形式写到文件中。 File节点中规定了文件要写入到什么目录中,上例中的“Log\\LogError\\”代表写入到“程序输入目录(Debug目录)\Log\LogError\”文件夹中。 AppendToFile节点规定了是否覆写到文件中。假设我们已经有了一个20131028.htm日志文件,当为true的时候,日志文件会附加到这个文件上。为false的时候,Log4Net会先将原来的日志文件备份,生成一个新的日志文件(见下图)。 image MaxFileSize 最大的文件大小。我们可以使用"KB", "MB" 或 "GB"为 MaxFileSize 作为后缀限定大小。默认的文件大小是10MB。 RollingStyle是文件创建的方式。上例中市设置为以Date方式创建新文件。 DatePattern 日期格式,当我们设置了RollingStyle 为Date方式后,Log4Net会自动使用DatePattern 中的日期格式来创建新的日志文件。 MaxSizeRollBackups这个属性用来设置,当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定。比如说,我们是以日期格式作为日志文件名的,假设今天是2013--,那么今天创建的日志文件名就是20131028.htm,当这个文件中要超过MaxFileSize的时候,Log4Net就自动将老的20131028.htm改名为20131028.htm.,并创建一个新的20131028.htm文件。 StaticLogFileName 是否采用静态文件名。因为我们这个例子是采用以日期作为文件名,每天的日志文件的名字都是动态的,所以上例中为false。如果采用静态文件名,那么日志文件的名字就是唯一确定的。可以参考下面的配置文件进行设置。下面的配置文件中就是采用静态文件名,生成的日志文件名都是log.txt。 复制代码
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
复制代码
layout就是布局。Layout中的ConversionPattern就是日志文件的格式,一些符号的介绍附加在下面。由于格式化的方式比较多,除了下面介绍的,大家也可以自己看看官方文档。 %m[%message] 输出的日志消息
%n 换行
%d[%datetime] 输出当前语句运行的时刻
%r 输出程序从运行到执行到当前语句时消耗的毫秒数
%d 当前语句所在的线程ID
%p 日志的当前优先级别
%c 当前日志对象的名称
%L 输出语句所在的行号
%F 输出语句所在的文件名
%-数字 表示该项的最小长度,如果不够,则用空格填充

Log4net 参数详解的更多相关文章

  1. (转)log4net使用详解

    说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括M ...

  2. 转:log4net使用详解

    说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括M ...

  3. Nginx主配置参数详解,Nginx配置网站

    1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...

  4. iptables参数详解

    iptables参数详解 搬运工:尹正杰 注:此片文章来源于linux社区. Iptalbes 是用来设置.维护和检查Linux内核的IP包过滤规则的. 可以定义不同的表,每个表都包含几个内部的链,也 ...

  5. chattr的常用参数详解

    chattr的常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际生产环境中,有的运维工程师不得不和开发和测试打交道,在我们公司最常见的就是部署接口.每天每个人部署的 ...

  6. mha配置参数详解

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

  7. $.ajax()方法所有参数详解;$.get(),$.post(),$.getJSON(),$.ajax()详解

    [一]$.ajax()所有参数详解 url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注 ...

  8. linux PHP 编译安装参数详解

    linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

  9. 【转】jqGrid 各种参数 详解

      [原文]http://www.cnblogs.com/younggun/archive/2012/08/27/2657922.htmljqGrid 各种参数 详解 JQGrid JQGrid是一个 ...

随机推荐

  1. java中反射学习整理

    转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序能够訪问.检測和改动它本身的状态或行为的一种能力. jav ...

  2. wpf Visibility 动画

    XAML实现: [xhtml] view plaincopy <Border Height="100" Width="80" CornerRadius=& ...

  3. 网页 php开发中html空文本节点问题user agent stylesheetbody

    最近开发中遇到一个奇怪的问题,我的一个网站头部,代码固定不变,放在了不同的模板进行展示,一部分出现了问题,总是距离相差8个像素,用firebug查看发现:meta 跑到 body 下面去了,并且发现了 ...

  4. 单击事件的处理方式及注册窗体的创建之(四)Intent实现界面跳转传值

    跳转开发步骤: 创建Intent对象  设置Intent对象的跳转路径  启动Intent //Register_Activity.java case R.id.btnRegister: Inte ...

  5. 归并排序java

    import java.util.Arrays; public class MergeSort { public static void main(String[] args) { MergeSort ...

  6. oracle取分组的前N条数据

    select * from(select animal,age,id, row_number()over(partition by animal order by age desc) row_num ...

  7. struts2 <s:iterator> 遍历方法

    1.MapAction.java import java.util.ArrayList;   import java.util.HashMap;   import java.util.List;    ...

  8. 设计模式--委托模式C++实现

    原文章地址:http://www.cnblogs.com/zplutor/archive/2011/09/17/2179756.html [委托模式 C++实现] 我对.Net的委托模型印象很深刻,使 ...

  9. Servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的用于开发动态web资源的技术.Sun公司在其API中提供了一个Servlet接口,用户若想开发一个动态web资源(即开发一个java程序向浏览器 ...

  10. Linux学习之fsck命令

    在windows下,磁盘的文件系统出错,需要运行chkdsk命令进行修复.而在linux下,则需要运行fsck命令.由于linux对于文件系统的错误非常敏感,由于意外断电或者其它原因导致linux系统 ...