转自:
下文笔者讲述日常开发中常见的日志框架简介说明,如下所示
日志框架简介
Java日常开发中
我们常见的日志框架有:
JDKLog、Log4J、LogBack、SLF4J、SLF4J
下文将依次讲述各日志框架的用途,如下所示
JDKLog(日志小刀)
JDKLog是JDK官方提供的一个记录日志的方式,直接在JDK中就可以使用。 import java.util.logging.Logger; /**** ** JDKLog 示例 **/ public class JDKLog { public static void main(String[] args) { Logger logger = Logger.getLogger("JDKLog"); logger.info("Hello World JDKLog."); } }
JDKLog优点:
使用非常简单,无需外界jar包
但是功能简单,扩展性差,目前市面上很少人使用
Log4J日志大炮
Log4j简介
Log4J是Apache中的日志开源框架
有多个分级(DEBUG/INFO/WARN/ERROR)记录级别
可区分记录,非常方便日志查看
Log4J:
有1.X版本和2.X 版本
现在官方推荐使用 2.X 版本
2.X架构和配置上都进行了调整
注意事项:
log4J1.x版本已经停止维护(2015年8月)
现在大家都使用Log4j2版本
Log4j2使用示例
1.使用Log4J2.x框架首先需要引入依赖的包
<!-- Log4J -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.2</version>
</dependency>
2.增加配置文件 log4j2.xml 放在 resource 目录下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
注意事项:
节点level属性表示输出的最低级别
3:编写测试类
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/****
** Log4J Demo
**/
public class Log4jLog {
public static void main(String args[]) {
Logger logger = LogManager.getLogger(Log4jLog.class);
logger.debug("Debug Level");
logger.info("Info Level");
logger.warn("Warn Level");
logger.error("Error Level");
}
}
注意事项:
当没有配置log4j2.xml配置文件
则LOG4J将自动启用类似于下面的的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
LogBack日志火箭
LogBack是Log4J进化版
它和Log4j的日志框架属于一个作者
LogBack具有Log4j的所有优点,并且还引入占位符的概念
使用LogBack示例
1.引入相应的jar包
<!-- LogBack -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
2.配置logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<logger name="com.java265" level="TRACE"/>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
注意事项:
LogBack 的日志级别区分可以细分到类或包
这样就可以使日志记录变得更加灵活
在之后的类文件中引入Logger类,并进行日志记录。
3.测试代码编写
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/****
** LogBack Demo
**/
public class LogBack {
static final Logger logger = LoggerFactory.getLogger(LogBack.class);
public static void main(String[] args) {
logger.trace("Trace Level.");
logger.debug("Debug Level.");
logger.info("Info Level.");
logger.warn("Warn Level.");
logger.error("Error Level.");
}
}
LogBack优点
1.LogBack解决Log4J不能使用占位符的问题
2.运行速度快
3.内部集成了SLF4J