1. [assembly: log4net.Config.XmlConfigurator(Watch = true)]//注入
  2. 在一个Web应用项目中,我使用了Fluent NHibernate作为数据访问组件,Log4net来做日志记录。实际编码中,主要使用了INFOERROR这两个等级来记录日志,如果按照以下Log4net配置:
  3. <root><level value="ALL"/><appender-ref ref="RollingFile"/><appender-ref ref="RollingFileTracer"/></root>
  4.  
  5. log4net会把INFOERROR的日志记录到同一个日志文件里,Fluent NHibernateINFO日志会大量存在于该日志文件中,这样一来对日后分析错误日志带来非常之不便,所以就想能不能单独把ERROR级的错误日志记录到一个特定的日志文件里。
  6. 于是开始尝试各种配置来实现这个需要,<root>标签不支持多个<level>,也就没法通过在<root>中配置多个不同级别的日志输入,通过查阅Log4net文档,找到了<Filter>这个标记,配置如下:
  7.  
  8. <configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/></configSections><log4net><!--http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html--><appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"><layout type="log4net.Layout.PatternLayout"><conversionPattern value="[%p %t] [%date{yyyy-MM-dd HH:mm:ss,fff}] %-5l - %m%n"/></layout></appender><appender name="RollingFile" type="log4net.Appender.RollingFileAppender"><file value="App_Data/log.log"/><appendToFile value="true"/><maximumFileSize value="5000KB"/><maxSizeRollBackups value="500"/><CountDirection value="1"/><RollingStyle value="Size"/><layout type="log4net.Layout.PatternLayout"><conversionPattern value="[%p %t] [%date{yyyy-MM-dd HH:mm:ss,fff}] %-5logger - %m%n"/></layout></appender><appender name="RollingFileTracer" type="log4net.Appender.RollingFileAppender"><file value="App_Data/Trace.log"/><appendToFile value="true"/><maximumFileSize value="5000KB"/><maxSizeRollBackups value="500"/><CountDirection value="1"/><RollingStyle value="Size"/><layout type="log4net.Layout.PatternLayout"><conversionPattern value="[%p] %m%n"/></layout><filter type="log4net.Filter.LevelRangeFilter"><levelMin value="ERROR"/><levelMax value="FATAL"/></filter></appender><root><level value="ALL"/><appender-ref ref="RollingFile"/><appender-ref ref="RollingFileTracer"/></root></log4net>
  9.  
  10. 我们可以看到“RollingFileTracer”中我们通过Filter过滤,只记录范围为ERRORFATAL,然后在<root>增加该appenderlevel设置为“ALL”记录所有级别的日志。好了,配置完成,程序实现了记录不同等级的错误信息到多个日志文件。
  11.  
  12. ----------------------------------事例--------------
  13. [assembly: log4net.Config.XmlConfigurator(Watch = true)]//注入
  14. <configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  15. </configSections>
  16.  
  17. <log4net>
  18. <!--存提示消息-->
  19. <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
  20. <file value="Log/Info/" />
  21. <appendToFile value="true" />
  22. <!-- 每个文件的大小限制 -->
  23. <maximumFileSize value="5MB" />
  24. <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
  25. <MaxSizeRollBackups value="-1" />
  26. <DatePattern value="yyyyMMdd&quot;.htm&quot;" />
  27. <!-- RollingStyle Composite 综合 Size 按大小 Date 按时间 -->
  28. <RollingStyle value="Composite" />
  29. <StaticLogFileName value="false" />
  30. <layout type="log4net.Layout.PatternLayout">
  31. <conversionPattern value="&lt;HR COLOR=red>%n时间:%d [%t] &lt;BR>%n级别:%-5p &lt;BR>%n类:%c [%x] &lt;BR>%n%m &lt;BR>%n &lt;HR Size=1>" />
  32. </layout>
  33. <filter type="log4net.Filter.LevelRangeFilter">
  34. <levelMin value="INFO" />
  35. <levelMax value="INFO" />
  36. </filter>
  37. </appender>
  38.  
  39. <!--存警告消息-->
  40. <appender name="RollingWarnFile" type="log4net.Appender.RollingFileAppender">
  41. <file value="Log/Warn/" />
  42. <appendToFile value="true" />
  43. <!-- 每个文件的大小限制 -->
  44. <maximumFileSize value="5MB" />
  45. <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
  46. <MaxSizeRollBackups value="-1" />
  47. <DatePattern value="yyyyMMdd&quot;.htm&quot;" />
  48. <!-- RollingStyle Composite 综合 Size 按大小 Date 按时间 -->
  49. <RollingStyle value="Composite" />
  50. <StaticLogFileName value="false" />
  51. <layout type="log4net.Layout.PatternLayout">
  52. <conversionPattern value="&lt;HR COLOR=red>%n时间:%d [%t] &lt;BR>%n级别:%-5p &lt;BR>%n类:%c [%x] &lt;BR>%n%m &lt;BR>%n &lt;HR Size=1>" />
  53. </layout>
  54. <filter type="log4net.Filter.LevelRangeFilter">
  55. <levelMin value="WARN" />
  56. <levelMax value="WARN" />
  57. </filter>
  58. </appender>
  59.  
  60. <!--存错误到危机消息-->
  61. <appender name="RollingFileTracer" type="log4net.Appender.RollingFileAppender">
  62. <file value="Log/Error/" />
  63. <appendToFile value="true" />
  64. <maximumFileSize value="10MB" />
  65. <maxSizeRollBackups value="-1" />
  66. <DatePattern value="yyyyMMdd&quot;.htm&quot;" />
  67. <RollingStyle value="Composite" />
  68. <StaticLogFileName value="false" />
  69. <layout type="log4net.Layout.PatternLayout">
  70. <conversionPattern value="&lt;HR COLOR=red>%n时间:%d [%t] &lt;BR>%n级别:%-5p &lt;BR>%n类:%c [%x] &lt;BR>%n%m &lt;BR>%n &lt;HR Size=1>" />
  71. </layout>
  72. <filter type="log4net.Filter.LevelRangeFilter">
  73. <levelMin value="ERROR" />
  74. <levelMax value="FATAL" />
  75. </filter>
  76. </appender>
  77. <root>
  78. <level value="ALL" />
  79. <appender-ref ref="RollingFile" />
  80. <appender-ref ref="RollingWarnFile" />
  81. <appender-ref ref="RollingFileTracer" />
  82. </root>
  83. </log4net>
  84.  
  85. -----------------------------------------------
  86. <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>
  87. <root>
  88. <level value="ALL"/>
  89. <appender-ref ref="RollingFile"/>
  90. <appender-ref ref="RollingFileTracer"/>
  91. </root>

Log4net按照不同级别写入多个日志文件的更多相关文章

  1. 动态指定log4net日志文件名称

    如果是希望日志文件按常见的日期格式动态命名,没什么好说的,直接修改app.config <param name="DatePattern" value="yyyyM ...

  2. weblogic开启http访问日志并实时写入日志文件

    由于http访问会产生大量日志,耗去不少IO和CPU所以在生产一般是不启用的:但有时我们会想启用http访问日志,尤其是在系统上线调试的时候. weblogic的日志默认在domain_name/se ...

  3. sqlserver数据以及日志文件的设置小结

    1.1:增加次数据文件 从SQL SERVER 2005开始,数据库不默认生成NDF数据文件,一般情况下有一个主数据文件(MDF)就够了,但是有些大型的数据库,由于信息很多,而且查询频繁,所以为了提高 ...

  4. Linux - 日志文件

    Linux日志文件绝大多数存放在/var/log目录,其中一些日志文件由应用程序创建,其他的则通过syslog来创建. Linux系统日志文件通过syslog守护程序在syslog套接字/dev/lo ...

  5. mysql基础---日志文件

    一 基本日志文件 MYSQL有不同类型的日志文件(各自存储了不同类型的日志),从它们当中可以查询到MYSQL里都做了些什么,对于MYSQL的管理工作,这些日志文件是不可缺少的. 1.错误日志(The ...

  6. Linux - 日志文件简介

    Linux日志文件绝大多数存放在/var/log目录,其中一些日志文件由应用程序创建,其他的则通过syslog来创建. Linux系统日志文件通过syslog守护程序在syslog套接字/dev/lo ...

  7. linux下日志文件error监控报警脚本分享

    即对日志文件中的error进行监控,当日志文件中出现error关键字时,即可报警!(grep -i error 不区分大小写进行搜索"error"关键字,但是会将包含error大小 ...

  8. MySQL 重做日志文件

    一.innodb log的基础知识 · innodb log顾名思义:即innodb存储引擎产生的日志,也可以称为重做日志文件,默认在innodb_data_home_dir下面有两个文件ib_log ...

  9. acle联机日志文件的维护

    1.刷新重做日志缓存的时机 a.commit b.缓存满了 c.checkpoint,checkpoint的触发有两种机制: 定时触发,由log_checkpoint_interval[1]参数决定间 ...

随机推荐

  1. vi学习 常用命令-新建-复制-剪切-粘贴

    mkdir /home/brandon.du/desktop/mylinux/test_1.txt   ---------mkdir新建文件夹 rm /home/brandon.du/desktop/ ...

  2. linux编译c文件

    1.创建.c文件,比如在firstmake文件夹创建了一个a.c文件,那么编译语句为: gcc -o firstmake a.c //格式为文件夹名 文件名 2.然后就会生成一个firstmake.o ...

  3. C# Substring的用法

    方法1  Substring(Int32) 从此实例检索子字符串. 子字符串在指定的字符位置开始并一直到该字符串的末尾. 方法2 Substring(Int32, Int32) 从此实例检索子字符串. ...

  4. 调试python程序

    pdb 关键步骤 python -m pdb ***.py n 单步

  5. C#多线程线程

    “线程同步”的含义   当一个进程启动了多个线程时,如果需要控制这些线程的推进顺序(比如A线程必须等待B和C线程执行完毕之后才能继续执行),则称这些线程需要进行“线程同步(thread synchro ...

  6. Python 基礎 - 淺copy補充說明

    在 import copy 這個模塊裡 基於第一個列表來做淺copy,實際上第二個列表裡的元素,是第一個列表的 引用. 接下來介紹 淺copy有三種方式可以使用 #!/usr/bin/env pyth ...

  7. python 字符串技巧 from python cookbook

    所有数据进入程序中都只是一串字节 英文字符占一个字节 汉语是两个字节 一字节byte=8bit Unicode字符串为每种语言的每种字符设定了统一并且唯一的二进制编码 big = r'This is ...

  8. RealProxy实现AOP编程(1)

    Program.cs class Program { static void Main(string[] args) { User user = " }; var processor = T ...

  9. 改变ubuntu终端显示语言(桌面系统是中文,终端提示是英文)

    打开终端: $ vi .bashrc 最后添加 if [ "$TERM"="linux" ] ;then export LANGUAGE=en_US expor ...

  10. Android之AlertDialog应用

    Android 中的对话框 dialog 对话框对于应用是必不可少的一个组件,在Android中也不例外,用于提示重要信息... Android提供了丰富的对话框支持,它提供了4种常用的对话框形式: ...