zoukankan      html  css  js  c++  java
  • log4j2常见配置

    依赖jar:
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.9.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.9.1</version>
    </dependency>
    在log4j2中配置文件可以为.xml,.json或者.jsn,默认情况下,系统选择configuration文件的优先级如下:
    1. log4j-test.json或者log4j-test.jsn
    2. log4j2-test.xml
    3. log4j.json或者log4j.jsn
    4. log4j2.xml 
     
    日志级别 从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。
     
    Appender 为日志输出目的地,常用的三种
    • Console:将输出到控制台
    • File:将结果输出到一个指定文件中。
    • RollingFile:和File一样,RollingFile则较为灵活,可以按照文件大小拆分文件
    PatternLayout 控制输出内容的节点,包括类名、时间、行号、日志级别、序号等都可以控制,同时还可以指定日志格式,可以使用正则表达式处理输出结果。用\输出,用%%输出%
    %c,%c{参数},%C{参数},%class{参数}:输出类名称
    %c org.apache.com.te.Foo org.apache.com.te.Foo
    %c{1} org.apache.com.te.Foo Foo
    %c{2} org.apache.com.te.Foo te.Foo
    %c{1.} org.apache.com.te.Foo o.a.c.t.Foo
    %c{1.1.!} org.apache.com.te.Foo o.a.!.!.Foo
    %c{.} org.apache.com.te.Foo ….Foo
    %d{参数}:输出时间。参数可以是text.SimpleDateFormat字符拼接而成,也可以使用系统默认
    %d{DEFAULT} 2012-11-02 14:34:02,781
    %d{ISO8601} 2012-11-02T14:34:02,781
    %d{ISO8601_BASIC} 20121102T143402,781
    %d{ABSOLUTE} 14:34:02,781
    %d{DATE} 02 Nov 2012 14:34:02,781
    %d{COMPACT} 20121102143402781
    %d{HH:mm:ss,SSS} 14:34:02,781
    %d{dd MMM yyyy HH:mm:ss,SSS} 02 Nov 2012 14:34:02,781
    %d{HH:mm:ss}{GMT+0} 18:34:02
    %d{UNIX} 1351866842
    %d{UNIX_MILLIS} 1351866842781
    %l 和 %L:输出行号,%l 输出完整的包路径及行号,%L 仅输出行号。此参数影响日志输出性能
    %m或%msg或%message:输出日志信息
    %M或%method:输出方法名
    %level{参数1}:不写参数时,输出日志级别。第一个参数用来替换日志信息的级别,格式为:{level=label, level=label, …},即使用label代替的字符串替换level,例如 %level{WARN=W, DEBUG=D, ERROR=E, TRACE=T, INFO=I},则logger.warn输出W等等
     
     
    log4j2.xml 配置文件
    <?xml version="1.0" encoding="UTF-8"?>    
    <configuration status="debug">  
     
         <!-- 变量配置 -->
        <Properties>
            <Property name="root_path">${sys:catalina.home}</Property>
        </Properties> 
     
        <!--先定义所有的appender -->  
        <appenders>  
            <!--这个输出控制台的配置 -->  
            <Console name="Console" target="SYSTEM_OUT">  
                <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->  
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>  
                <!--这个都知道是输出日志的格式 -->  
                <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %c %L %M - %msg%xEx%n"/>  
            </Console>  
               
            <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 -->  
            <!--append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true -->  
            <File name="log" fileName="${root_path}/logs/logdemo.log" append="true">  
                <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %c %L %M - %msg%xEx%n"/>  
            </File>  
               
            <!--添加过滤器ThresholdFilter,可以有选择的输出某个级别以上的类别  onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否则直接拒绝  -->  
            <File name="ERROR" fileName="${sys:catalina.home}/logs/logdemo_error.log">  
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>  
                <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>  
            </File>  
       
            <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年-月-日建立的文件夹下面并进行压缩,作为存档 -->  
            <RollingFile name="RollingFile" fileName="${sys:catalina.home}/logs/logdemo_web.log"  
                         filePattern="${sys:catalina.home}/logs/$${date:yyyy-MM-dd}/logdemo_web-%d{yyyy-MM-dd}-%i.log.gz">  
                <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>  
                <!-- 设置日志文件大小超过多少后开始进行压缩 单位:KB/MB/GB -->
                <SizeBasedTriggeringPolicy size="10MB"/>  
                <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,超过后则会覆盖之前的,这里设置了20 -->
                <DefaultRolloverStrategy max="20"/>
            </RollingFile>  
    
    <!--每分钟产生一个文件,历史的日志会自动存入按年-月-日建立的文件夹下面并进行压缩,作为存档 -->  
    <RollingFile name="DailyRollingFile" fileName="${sys:catalina.home}/logs/logdemo_all.log"  
                 filePattern="${sys:catalina.home}/logs/$${date:yyyy-MM-dd}/logdemo_all-%d{yyyy-MM-dd_HH-mm}-%i.log">               
        <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>  
               <TimeBasedTriggeringPolicy interval="1" modulate="true" />  
    </RollingFile> 
        </appenders>  
           
        <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->  
        <loggers>  
            <!--建立一个默认的root的logger,只有能一个root -->  
            <root level="debug">  
                <appender-ref ref="RollingFile"/>  
                <appender-ref ref="Console"/>  
                <appender-ref ref="ERROR" />  
                <appender-ref ref="log"/>  
            </root>  
           <!-- 设置指定包输出指定的日志级别 -->
            <logger name="com.gavin" level="warn"/>
        </loggers>  
    </configuration>  
     
  • 相关阅读:
    Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)
    算法七:广度优先搜索
    sqldependency 支持的select
    ghostDoct 使用 (转 http://www.cnblogs.com/RockyMyx/archive/2010/04/20/Project-Route-Using-GhostDoc.html)
    Jenkins 使用学习笔记
    C# 反射类型转换
    时间分割线:2016年1月的文章都是从以前chinaunix的博客文章
    Error 42 error C2784: 'bool std::operator <(const std::_Tree<_Traits>
    JNI的类路径问题
    【转】不用临时变量也可以交换变量的值
  • 原文地址:https://www.cnblogs.com/gavinYang/p/8168928.html
Copyright © 2011-2022 走看看