转载自: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 }