zoukankan      html  css  js  c++  java
  • log4net配置文档

    log4日志组件的应用确实简单实用,在比较了企业库和Log4的日志功能后,个人觉得Log4的功能更加强大点.补充说明下,我使用的企业库是2.0版本,Log4net是1.2.1版本的.

    在Log4net的应用上,已经有人做了说明分析了,在本文中,主要解析下Log4net中的RollingFileAppender的应用.

    主要参考了Log4net的帮助文档.在项目中的log4net-1.2.10\doc文件下有.


    RollingFileAppender主要是基于FileAppender构建的,很多属性方法都是继承于FileAppender,所以在选项设置上,也有许多是相同的.

    下面的例子使日志文件名为log.txt,日志文件名是以文件大小进行变换的,如果旧日志文件大小到100KB时,就会变换文件名为log.txt.1,log.txt.2,log.txt.3...,一直到10为止

       1. <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">  
       2.         <!--日志文件名-->
       3.     <file value="log.txt"/>
       4.     <!--是否在文件中追加-->
       5.     <appendToFile value="true"/>
       6.     <!--按照文件的大小进行变换日志文件-->
       7.     <rollingStyle value="Size"/>
       8.     <!--最大变换数量-->
       9.     <maxSizeRollBackups value="10"/>
      10.     <!--最大文件大小-->
      11.     <maximumFileSize value="100KB"/>
      12.     <!--日志文件名是否为静态-->
      13.     <staticLogFileName value="true"/>
      14.     <layout type="log4net.Layout.PatternLayout">
      15.         <conversionPattern value="�te [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
      16.     </layout>
      17. </appender>

    下面的例子以时间周期变换日志文件名,每分钟都改变日志的文件名,日志文件名为logfileyyyyMMdd-HHmm,这里补充说明下,如果要在这个文件名后面加上.log后缀,必须使用转义字符,比如<datePattern value="yyyyMMdd-HHmm&quot;.log&quot;" />

       1. <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
       2.         <!--日志文件名开头-->
       3.     <file value="logfile" />
       4.     <!--是否追加到文件-->
       5.     <appendToFile value="true" />
       6.     <!--变换的形式为日期-->
       7.     <rollingStyle value="Date" />
       8.     <!--日期的格式-->
       9.     <datePattern value="yyyyMMdd-HHmm" />
      10.     <layout type="log4net.Layout.PatternLayout">
      11.         <conversionPattern value="�te [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      12.     </layout>
      13. </appender>

    下面的例子综合使用使用日期和文件大小变换日志文件名。

       1. <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
       2.     <!--日志文件名开头-->
       3.     <file value="logfile" />
       4.     <!--是否追加到文件-->
       5.     <appendToFile value="true" />
       6.     <!--混合使用日期和文件大小变换日志文件名-->
       7.     <rollingStyle value="Composite" />
       8.     <!--日期的格式-->
       9.     <datePattern value="yyyyMMdd" />
      10.     <!--最大变换数量-->
      11.     <maxSizeRollBackups value="10" />
      12.     <!--最大文件大小-->
      13.     <maximumFileSize value="1MB" />
      14.     <layout type="log4net.Layout.PatternLayout">
      15.         <conversionPattern value="�te [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      16.     </layout>
      17. </appender>

    下面例子是在每次程序运行的时候,都会备份原先的日志文件,当运行的日志文件大于50G的时候才会变换日志文件名。

       1. <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
       2.     <!--日志文件名-->
       3.     <file value="logfile.txt" />
       4.     <!--不追加到原文件-->
       5.     <appendToFile value="false" />
       6.     <!--以日志文件大小变换文件名-->
       7.     <rollingStyle value="Size" />
       8.     <!--最大变换数量,-1为不限制-->
       9.     <maxSizeRollBackups value="-1" />
      10.     <!--最大文件大小-->
      11.     <maximumFileSize value="50GB" />
      12.     <layout type="log4net.Layout.PatternLayout">
      13.         <conversionPattern value="�te [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      14.     </layout>
      15. </appender>

    下面是RollingFileAppender类中的部分Public Instance Properties(公共属性)的说明,没有全部测试,难免谬误,如果你知道,请不要吝啬告写。
    CountDirection : 定义当前文件是最小编号的文件还是最大编号的文件。默认为-1,总是以更小的编号。
    datePattern : DateFormatter日期格式,string类型。
    Encoding : 就是文件的编码,默认为Default,就是程序本身的编码了。
    FilterHead : 分割符头部。
    ImmediateFlush : 表示是否立即输出到文件,布尔型的。
    LockingModel : 文件锁类型,RollingFileAppender本身不是线程安全的,如果在程序中没有进行线程安全的限制,可以在这里进行配置,确保写入时的安全。有两中类型:FileAppender.ExclusiveLock 和 FileAppender.MinimalLock
    Name : 设置本Appander的名称。
    SecurityContext : 比较少应用,对日志进行加密只类的,使用SecurityContextProvider转换。(对日志的保密要求比较高的时候应该可以应用上吧,Log4考虑的还挺周全)
    Threshold : 设置内容级别的,比如:DEBUG,INFO等等。

     

    在Log4net的配置中有两种方法是等价的:
    <param name="File" value="log.txt" /> 和
    <File value="log.txt" />
    个人更倾向后者。在一些数据库上的应用时还有许多Param呢。

  • 相关阅读:
    升级Nginx1.14.1以上版本
    MaxScale中间件部署数据库读写分离
    php文件锁解决少量并发问题
    使用mysql悲观锁解决并发问题
    配置和查看composer镜像
    PHP常用的 五种设计模式及应用场景
    全球免费公共 DNS 解析服务器 IP 地址列表推荐 (解决无法上网/加速/防劫持)
    九种跨域方式实现原理
    Hadoop中RPC协议小例子报错java.lang.reflect.UndeclaredThrowableException解决方法
    DataNode启动不成功——java.net.BindException: Port in use: localhost:0 Caused by: java.net.BindException: Cannot assign requested address解决办法
  • 原文地址:https://www.cnblogs.com/cykjydxs/p/2781058.html
Copyright © 2011-2022 走看看