手机微网站平台登录入口,东营建网站公司,上海品划做网站,网站建设教程菜鸟教程文章目录 背景SLF4J - 简单日志门面:Log4j - 强大而古老的日志框架:Log4j2 - Log4j的升级版:Logback - Log4j的继任者:比较Springboot集成slf4j、log4j2参考 背景
在Java开发中#xff0c;日志记录是一个不可或缺的组成部分。为了满足不同的需求#xff0c;Java社区涌现出多… 文章目录 背景SLF4J - 简单日志门面:Log4j - 强大而古老的日志框架:Log4j2 - Log4j的升级版:Logback - Log4j的继任者:比较Springboot集成slf4j、log4j2参考 背景
在Java开发中日志记录是一个不可或缺的组成部分。为了满足不同的需求Java社区涌现出多个日志框架其中包括SLF4J、Log4j、Log4j2和Logback。本文将比较这些框架以及为什么在项目中选择使用它们。
SLF4J - 简单日志门面:
SLF4J 是一个为Java提供简单日志的门面。它并不是一个具体的日志实现而是提供了一个通用的API允许开发者选择底层的日志框架。下面是一个简单的SLF4J使用示例
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class SLF4JExample {private static final Logger logger LoggerFactory.getLogger(SLF4JExample.class);public static void main(String[] args) {logger.info(Hello, SLF4J!);}
}
slf4j不是一个真正意义的可用应用程序他是一个接口层 就像java 的接口性质一样单纯集成了slf4j 的话执行比如log.info log.debug等方法只能在控制台打印日志并不会在持久化到文件或者其他自定义介质上,slf4j至少需要一个实现层框架比如log4jlogback等
Log4j - 强大而古老的日志框架:
Log4j 是Java社区中最早的日志框架之一提供了丰富的功能包括异步日志、插件支持等。下面是一个Log4j的使用示例
import org.apache.log4j.Logger;public class Log4jExample {private static final Logger logger Logger.getLogger(Log4jExample.class);public static void main(String[] args) {logger.info(Hello, Log4j!);}
}
Log4j2 - Log4j的升级版:
Log4j2 是 Log4j 的升级版解决了 Log4j 1.x 存在的性能和线程安全问题。它引入了新的特性如异步日志、插件体系结构等。以下是一个Log4j2的使用示例
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;public class Log4j2Example {private static final Logger logger LogManager.getLogger(Log4j2Example.class);public static void main(String[] args) {logger.info(Hello, Log4j2!);}
}
Logback - Log4j的继任者:
Logback 是由 Log4j 的创始人开发的日志框架旨在成为 Log4j 的继任者。它具有与 Log4j 相似的功能并被认为是更现代和性能更好的选择。以下是一个Logback的使用示例
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class LogbackExample {private static final Logger logger LoggerFactory.getLogger(LogbackExample.class);public static void main(String[] args) {logger.info(Hello, Logback!);}
}
比较
slf4j,log4j,log4j2,logback 时间线log4j -slf4j -logback -log4j2 SLF4J 是一个日志门面它允许在不修改应用代码的情况下切换不同的日志实现。一般与具体的实现框架如Logback或Log4j2一起使用。 Log4j 是一个功能强大而古老的日志框架提供了许多高级功能。然而由于其1.x版本存在一些问题现在更推荐使用 Log4j2。 Log4j2 是 Log4j 的升级版解决了旧版本的一些问题性能更好并引入了新特性。在现代项目中是一个不错的选择。 Logback 是由 Log4j 的创始人开发的日志框架旨在成为 Log4j 的继任者。它具有较好的性能和一些新特性是一个流行的选择。
在选择日志框架时考虑项目需求、性能、易用性和社区支持等因素是很重要的。大多数现代Java应用程序选择使用 SLF4J 作为日志门面结合 Logback 或 Log4j2 作为底层实现以提供较好的性能和灵活性。
Springboot集成slf4j、log4j2
Spring Boot默认使用SLF4J作为日志门面并且通过classpath中的依赖关系Log4j2会被自动识别并成为默认的日志实现。下面是一个简单的示例
1、添加依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactId
/dependency2、创建Log4j2配置文件 在src/main/resources目录下创建一个名为log4j2.xml的文件用于配置Log4j2。以下是一个简单的配置示例
?xml version1.0 encodingUTF-8?
Configuration statusINFOAppendersConsole nameConsole targetSYSTEM_OUTPatternLayout pattern%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n//Console/AppendersLoggersRoot levelinfoAppenderRef refConsole//Root/Loggers
/Configuration也可以不配置xml文件使用 application.properties
logging.file.path./logs
logging.level.rootinfo
logging.file.name./logs/app.log3、编写Spring Boot应用程序 创建一个简单的Spring Boot应用程序使用SLF4J进行日志记录。例如创建一个HelloController
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;RestController
public class HelloController {private static final Logger logger LoggerFactory.getLogger(HelloController.class);GetMapping(/hello)public String hello() {logger.info(你好啊我是log4j);return Hello, world!;}
}
可以看到命令行打印出来了 由于我们在 application.properties 配置了日志的路径所以在这个路径下也保存了一份日志你也可以将日志保存到数据库或者其他地方
参考
https://blog.csdn.net/madness1010/article/details/128332275