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 }
原文地址:https://www.cnblogs.com/ShawnYang/p/7488333.html