log4j2單獨的配置與使用&log4j2+slf4j的結合的配置與使用


轉載自:https://github.com/iamyong

一、log4j2單獨的配置與使用

  • 所用jar文件

log4j-api-2.8.2.jar

log4j-core-2.8.2.jar

  • 配置文件 log4j2.xml
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <configuration status="error">
 3     <!-- 先定義所有的appender -->
 4     <appenders>
 5        <!--  這個輸出控制台的配置 -->
 6         <Console name="Console" target="SYSTEM_OUT">
 7             <!-- 控制台只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch) -->
 8             <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
 9             <!-- 這個都知道是輸出日志的格式 -->
10             <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
11         </Console>
12        <!--  文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,這個也挺有用的,適合臨時測試用 -->
13         <File name="log" fileName="log/test.log" append="false">
14             <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
15         </File>
16        <!--  這個會打印出所有的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面並進行壓縮,作為存檔 -->
17         <RollingFile name="RollingFile" fileName="/home/webservice/ftp_home/Ganso_mst_Shop_IF.log"
18                      filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
19             <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
20             <SizeBasedTriggeringPolicy size="50MB"/>
21         </RollingFile>
22     </appenders>
23   <!--   然后定義logger,只有定義了logger並引入的appender,appender才會生效 -->
24     <loggers>
25        <!--  建立一個默認的root的logger -->
26         <root level="trace">
27             <appender-ref ref="RollingFile"/>
28             <appender-ref ref="Console"/>
29         </root>
30     </loggers>
31 </configuration> 
  • 使用:
 1 import org.apache.logging.log4j.LogManager;
 2 import org.apache.logging.log4j.Logger;
 3 public class Test{
 4 //定義LOG
 5     static Logger logger = LogManager.getLogger();
 6     //或者(static Logger logger = LogManager.getLogger(Test.class.getName());)
 7     //(static Logger logger = LogManager.getLogger(Test.class);)
 8 
 9  public static void main(String[] args) throws Exception {
10         logger.info("{}{}",1234455,"djsfhsdjhf");
11         logger.debug("this is a test"); 
12     }
13 }

 

二、log4j2+slf4j的結合的配置與使用

  • 所用jar

log4j-api-2.8.2.jar

log4j-core-2.8.2.jar

log4j-slf4j-impl-2.8.2.jar

slf4j-api-1.7.25.jar

  • 配置文件log4j2.xml
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <configuration status="error">
 3     <!-- 先定義所有的appender -->
 4     <appenders>
 5        <!--  這個輸出控制台的配置 -->
 6         <Console name="Console" target="SYSTEM_OUT">
 7             <!-- 控制台只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch) -->
 8             <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
 9             <!-- 這個都知道是輸出日志的格式 -->
10             <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
11         </Console>
12        <!--  文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,這個也挺有用的,適合臨時測試用 -->
13         <File name="log" fileName="log/test.log" append="false">
14             <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
15         </File>
16        <!--  這個會打印出所有的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面並進行壓縮,作為存檔 -->
17         <RollingFile name="RollingFile" fileName="/home/webservice/ftp_home/Ganso_mst_Shop_IF.log"
18                      filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
19             <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
20             <SizeBasedTriggeringPolicy size="50MB"/>
21         </RollingFile>
22     </appenders>
23   <!--   然后定義logger,只有定義了logger並引入的appender,appender才會生效 -->
24     <loggers>
25        <!--  建立一個默認的root的logger -->
26         <root level="trace">
27             <appender-ref ref="RollingFile"/>
28             <appender-ref ref="Console"/>
29         </root>
30     </loggers>
31 </configuration>
  • 使用
 1 import org.slf4j.Logger;
 2 import org.slf4j.LoggerFactory;
 3 
 4 public class Test {
 5     private static Logger logger =        
 6     LoggerFactory.getLogger(Thread.currentThread().getStackTrace()[1].getClassName());
 7     public static void main(String[] args) throws Exception {
 8         logger.info("{}以及{}","張三","李四");    
 9     }
10 
11 }

 


免責聲明!

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



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