SpringBoot学习之路(三): slf4j日志的使用,项目属性的配置
【slf4j日志的使用】
在一开始,我一般判断信息的时候,都是在代码块中使用使用 System.out.println()来打印一些信息,但都说这种方法不好,我也这么认为,毕竟太烦了了,对程序运行而言会增加资源的消耗,而对我来说就是会增加我的麻烦。
就像下面这样的例子:
@RestController @RequestMapping("/test") public class TestController { @PostMapping("/login") public String login(String username,String password){ if(Constants.OUT_FLAG) System.out.println("用户名称:%s ,用户口令:%s", username,password); return "index"; } }
我可以通过 Constants 接口中的常量定义是否需要输出,或者使用 int 型来控制不同的输出等级
然后我在网上搜索资料的时候,就看到实际项目中使用的是 slf4j 的 logback 来输出日志,效率挺高的,Spring Boot 提供了一套日志系统,logback 是最优的选择。下面我来进行我对它的学习总结:
1.slf4j 介绍
SLF4J 即简单日志门面,不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单 Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
这里的意思是:只需要按统一的方式写记录日志的代码,而无需关心日志是通过哪个日志系统,以什么风格输出的。因为它们取决于部署项目时绑定的日志系统。例如,在项目中使用了 slf4j 记录日志,并且绑定了 log4j,即导入相应的依赖,则日志会以 log4j 的风格输出;后期需要改为以 logback 的风格输出日志,只需要将 log4j替换成 logback 即可,不用修改项目中的代码。
这对于第三方组件的引入的不同日志系统来说几乎零学习成本,况且它的优点不仅仅这一个而已,还有简洁的占位符的使用和日志级别的判断。
2.【slf4j-log4j】通过 slf4j 调用 log4j 的实现
1.需要导入的依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> <version>1.3.8.RELEASE</version> </dependency> </dependencies>
2. 在 resources 根目录下创建一个 log4j 的配置文件 log4j.properties
og4j.rootLogger=DEBUG, stdout //根日志记录器, 参数 1 为需要输出的日志等级,参数 2 为日志输出的目标地名称 stuout log4j.appender.stdout=org.apache.log4j.ConsoleAppender// 设置stdout 是控制台输出 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout //配置日志输出的格式 log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)