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>  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM