轉載自: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 }