一个完整的配置文件的例子如下所示,这个是”在C#代码中应用Log4Net(二)”中使用的配置文件。

<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="100" /><param name="MaxFileSize" value="10240" /><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="10240" /><param name="MaxSizeRollBackups" value="100" /><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>

先不分析上面这段配置信息是什么意思。我们先来回想一下我们的日志类通常用来做什么,假设我们有一个库存管理系统,分为两大模块,一个是出库,一个是入库。我们可能想要出库的相关信息保存在某一个文件夹里面,入库的信息存在另一个文件夹里面。这样,我们通常的做法是用在日志类中不同的路径将日志写到不同位置,但是如果我们不单单想要写到日志文件中,而且想要将这些日志文件插入数据库呢?一般来讲,我们会再建立一些方法,来写到数据库。另外,正常日志信息和错误日志信息的布局,我们可能想要根据日志类型的不同,改变信息的布局,比如错误日志里面有异常信息的记录,正常日志里面就没有异常的记录。

总结地说,我们的日志类的需求通常就是:1、能够按要求将日志写到不同的介质上(文件、数据库、邮件等);2、能够根据日志类型的不同,写到不同的位置;3、能根据信息的类型,改变日志的布局。

不得不说,想要写好一个日志记录类还是挺不容易的的,看是简单的需求要做好,也是需要下大工夫的。而这些在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="100" /><!-- 备份文件的个数--><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会先将原来的日志文件备份,生成一个新的日志文件(见下图)。

MaxFileSize 最大的文件大小。我们可以使用"KB", "MB" 或 "GB"为 MaxFileSize 作为后缀限定大小。默认的文件大小是10MB。

RollingStyle是文件创建的方式。上例中市设置为以Date方式创建新文件。

DatePattern 日期格式,当我们设置了RollingStyle 为Date方式后,Log4Net会自动使用DatePattern 中的日期格式来创建新的日志文件。

MaxSizeRollBackups这个属性用来设置,当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定。比如说,我们是以日期格式作为日志文件名的,假设今天是2013-10-28,那么今天创建的日志文件名就是20131028.htm,当这个文件中要超过MaxFileSize的时候,Log4Net就自动将老的20131028.htm改名为20131028.htm.1,并创建一个新的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="10" /><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 输出语句所在的文件名
%-数字 表示该项的最小长度,如果不够,则用空格填充

在C#代码中应用Log4Net 中配置文件的解释相关推荐

  1. log4net保存到数据库系列二:独立配置文件中配置log4net

    园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...

  2. 在C#代码中应用Log4Net系列教程(附源代码)

    Log4Net应该可以说是DotNet中最流行的开源日志组件了.以前需要苦逼写的日志类,在Log4Net中简单地配置一下就搞定了.没用过Log4Net,真心不知道原来日志组件也可以做得这么灵活,当然这 ...

  3. 在C#代码中应用Log4Net(五)将Log4Net正确地封装在自己的类库中并进行调用

    前面的几篇文章已经比较完整地解释了怎么使用Log4Net,但是我们可能需要将Log4Net的日志类封装在自己的类库中,以便C/S或B/S程序进行调用.下面的示例程序简单地分为两层,一个是应用程序层We ...

  4. 解决eclipse中mybatis的xml配置文件无代码提示问题

    解决eclipse中mybatis的xml配置文件无代码提示问题 参考文章: (1)解决eclipse中mybatis的xml配置文件无代码提示问题 (2)https://www.cnblogs.co ...

  5. 在.net开发中使用Log4Net组件

    1 简介 1.1 Log4net的优点: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断 ...

  6. Log4net 中输出日志到文件,文件名根据日期生成

    1           简介 1.1          Log4net的优点: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管 ...

  7. 在C#的类库中使用log4net

    在C#的类库中使用log4net 1,在类库中添加对log4net的引用.并且在app.config(web.config)中添加如下代码: 添加的位置你懂的.  <section name=& ...

  8. asp.net core中使用log4net

    和之前的ASP.NET MVC中的使用LOG4NET的方法有些不同,这里先记录一下,使用步骤如下 : 1. 建立 ASP.NET CORE项目中,NUGET中搜索log4net后下载安装 2. 根目录 ...

  9. asp.net Web项目中使用Log4Net进行错误日志记录

    使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能改变 ...

最新文章

  1. 201621123030《Java程序设计》第4周学习总结
  2. python 调用class不指定函数_python调用另一个.py中的类或函数
  3. 由Photoshop高反差保留算法原理联想到的一些图像增强算法。
  4. 多人编辑同一个md_多人协同编辑一份Word文档的正确姿势是这样的
  5. 【ARM】Tiny4412裸板编程之MMU(段1M)
  6. 计算机组成原理——指令流水线
  7. linux 运行 dmol3,Dmol3建模及优化
  8. 来自微软华人的软件人生经历:功夫在身外
  9. React传递参数的多种方式
  10. 管理科学の学生自学CS的【计划】与【心得】
  11. java swing 最小化到托盘_用Java实现程序最小化到托盘区
  12. char与byte的差别
  13. iText5官方系列教程-iText in Action(一)
  14. HTTP协议之报文格式
  15. QQ获取好友列表接口 -
  16. 嵌入式-----产品手册----塔吊黑匣子电气安装培训
  17. 计算机类课题研究方法,科研课题研究的基本方法(一)
  18. [HTB]Nunchucks
  19. unity python热更新_Unity热更新介绍和测试方法
  20. 关于 Adobe PDF虚拟打印机

热门文章

  1. C++实现队列queue(附完整源码)
  2. QT实现Media Player(媒体播放器)
  3. 计算机仿真作业三,计算机仿真技术作业三.doc
  4. Elasticsearch中的document数据格式,简单的集群管理,商品的索引的CRUD操作(学习资料记录)
  5. HDFS的工作机制,HDFS写数据流程,HDFS读数据流程(来自学习资料)
  6. 在自己笔记本电脑上如何访问虚拟机的内容、包括可以使用ssh、访问tomcat、访问nginx
  7. 01_JNI是什么,为什么使用,怎么用JNI,Cygwin环境变量配置,NDK案例(使用Java调用C代码),javah命令使用
  8. 检索数据_21_处理空值的排序
  9. 线性代数之行列式矩阵术语中英对照
  10. python数组排序奇数在前偶数在后_数组排列(奇数在前,偶数在后)