zoukankan      html  css  js  c++  java
  • Log4J.xml配置详解

    支持原版,转载地址为: https://blog.csdn.net/genyizha/article/details/74502812
    Appender
    Appender:日志输出器,配置日志的输出级别、输出位置等,包括以下几类:

    ConsoleAppender: 日志输出到控制台;
    FileAppender:输出到文件;
    RollingFileAppender:输出到文件,文件达到一定阈值时,自动备份日志文件;
    DailyRollingFileAppender:可定期备份日志文件,默认一天一个文件,也可设置为每分钟一个、每小时一个;
    WriterAppender:可自定义日志输出位置。
    日志级别
    一般日志级别包括:ALL,DEBUG, INFO, WARN, ERROR,FATAL,OFF
    Log4J推荐使用:DEBUG, INFO, WARN, ERROR
    输出格式
    Log4J最常用的日志输出格式为:org.apache.log4j.PatternLayOut,其主要参数为:

    %n - 换行
    %m - 日志内容
    %p - 日志级别(FATAL, ERROR,WARN, INFO,DEBUG or custom)
    %r - 程序启动到现在的毫秒数
    %t - 当前线程名
    %d - 日期和时间, 一般使用格式 %d{yyyy-MM-dd HH:mm:ss, SSS}
    %l - 输出日志事件的发生位置, 同 %F%L%C%M
    %F - java 源文件名
    %L - java 源码行数
    %C - java 类名,%C{1} 输出最后一个元素
    %M - java 方法名

    代码示例

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
      3 
      4 <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
      5 
      6     <!-- 日志输出到控制台 -->
      7     <appender name="console" class="org.apache.log4j.ConsoleAppender">
      8         <!-- 日志输出格式 -->
      9         <layout class="org.apache.log4j.PatternLayout">
     10             <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
     11         </layout>
     12 
     13         <!--过滤器设置输出的级别-->
     14         <filter class="org.apache.log4j.varia.LevelRangeFilter">
     15             <!-- 设置日志输出的最小级别 -->
     16             <param name="levelMin" value="INFO"/>
     17             <!-- 设置日志输出的最大级别 -->
     18             <param name="levelMax" value="ERROR"/>
     19         </filter>
     20     </appender>
     21 
     22 
     23     <!-- 输出日志到文件 -->
     24     <appender name="fileAppender" class="org.apache.log4j.FileAppender">
     25         <!-- 输出文件全路径名-->
     26         <param name="File" value="/data/applogs/own/fileAppender.log"/>
     27         <!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件-->
     28         <param name="Append" value="false"/>
     29         <param name="Threshold" value="INFO"/>
     30         <!--是否启用缓存,默认false-->
     31         <param name="BufferedIO" value="false"/>
     32         <!--缓存大小,依赖上一个参数(bufferedIO), 默认缓存大小8K  -->
     33         <param name="BufferSize" value="512"/>
     34         <!-- 日志输出格式 -->
     35         <layout class="org.apache.log4j.PatternLayout">
     36             <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
     37         </layout>
     38     </appender>
     39 
     40 
     41     <!-- 输出日志到文件,当文件大小达到一定阈值时,自动备份 -->
     42     <!-- FileAppender子类 -->
     43     <appender name="rollingAppender" class="org.apache.log4j.RollingFileAppender">
     44         <!-- 日志文件全路径名 -->
     45         <param name="File" value="/data/applogs/RollingFileAppender.log" />
     46         <!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件-->
     47         <param name="Append" value="true" />
     48         <!-- 保存备份日志的最大个数,默认值是:1  -->
     49         <param name="MaxBackupIndex" value="10" />
     50         <!-- 设置当日志文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB,默认值是:10MB -->
     51         <param name="MaxFileSize" value="10KB" />
     52         <!-- 设置日志输出的样式 -->`
     53         <layout class="org.apache.log4j.PatternLayout">
     54             <!-- 日志输出格式 -->
     55             <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
     56         </layout>
     57     </appender>
     58 
     59 
     60     <!-- 日志输出到文件,可以配置多久产生一个新的日志信息文件 -->
     61     <appender name="dailyRollingAppender" class="org.apache.log4j.DailyRollingFileAppender">
     62         <!-- 文件文件全路径名 -->
     63         <param name="File" value="/data/applogs/own/dailyRollingAppender.log"/>
     64         <param name="Append" value="true" />
     65         <!-- 设置日志备份频率,默认:为每天一个日志文件 -->
     66         <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
     67 
     68         <!--每分钟一个备份-->
     69         <!--<param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm'.log'" />-->
     70         <layout class="org.apache.log4j.PatternLayout">
     71             <param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n"/>
     72         </layout>
     73     </appender>
     74 
     75 
     76 
     77     <!--
     78         1. 指定logger的设置,additivity是否遵循缺省的继承机制
     79         2. 当additivity="false"时,root中的配置就失灵了,不遵循缺省的继承机制
     80         3. 代码中使用Logger.getLogger("logTest")获得此输出器,且不会使用根输出器
     81     -->
     82     <logger name="logTest" additivity="false">
     83         <level value ="INFO"/>
     84         <appender-ref ref="dailyRollingAppender"/>
     85     </logger>
     86 
     87 
     88     <!-- 根logger的设置,若代码中未找到指定的logger,则会根据继承机制,使用根logger-->
     89     <root>
     90         <appender-ref ref="console"/>
     91         <appender-ref ref="fileAppender"/>
     92         <appender-ref ref="rollingAppender"/>
     93         <appender-ref ref="dailyRollingAppender"/>
     94     </root>
     95 
     96 </log4j:configuration>

    测试代码

     1 @Component
     2 public class LogTest {
     3     Logger logger = Logger.getLogger("logTest1");
     4 
     5     @PostConstruct
     6     public void test(){
     7         for (int i=0; i<1000; i++) {
     8             logger.info(i + "----Log.Info----");
     9             logger.info(i + "----Log.Info----");
    10             logger.info(i + "----Log.Info----");
    11         }
    12     }
    13 }
    View Code

    测试结果

    控制台日志输出展示

    日志输出到文件: 

  • 相关阅读:
    Yocto开发笔记之《驱动调试-华为3G模块》(QQ交流群:519230208)
    Yocto开发笔记之《应用程序架构》(QQ交流群:519230208)
    Yocto开发笔记之《串口驱动调试》(QQ交流群:519230208)
    Yocto开发笔记之《快速入门,环境搭建 & 编译》(QQ交流群:519230208)
    Linux Canbus调试笔记
    ubuntu默认防火墙
    Linux安全之——Ubuntu的iptable命令使用
    嵌入式Linux系统开发环境搭建
    在Android上实现使用Facebook登录(基于Facebook SDK 3.5)
    Android应用内语言切换实现(转)
  • 原文地址:https://www.cnblogs.com/aoshicangqiong/p/9869446.html
Copyright © 2011-2022 走看看