博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Springboot项目中slf4j日志的简单使用
阅读量:3948 次
发布时间:2019-05-24

本文共 2573 字,大约阅读时间需要 8 分钟。

The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end  user to plug in the desired logging framework at deployment time.

  官网对于slf4j的描述:SLF4J 是日志记录系统的简单外观,允许最终用户在部署时插入所需的日志记录系统

为什么不直接使用
system.out.println()来打印我想看的信息?

  因为system.out.println()日志打印不可控制、也不能添加过滤器、打印时间无法确定、日志没有级别区分,而且无法将信息记录下来。

  为了解决项目在运行过程中能够让开发人员清晰明了地知道项目地运行情况,log日志应运而生。现在的日志框架也是非常多的,常见的日志框架包括了JUL(java util logging)、JCL(jakarta commons logging)、Jboss-logging、logback、log4j、log4j2、slf4j

  我们在项目中一般选择面向slf4j这种日志门户进行编程,但是日志底层的具体实现交给了不同的日志框架,例如交给log4j、logback……

在这里插入图片描述

  日志框架一多java的很多技术栈中使用的日志框架就无法做到统一,比如说我的项目使用了A组件和B组件,A组件底层使用的日志框架是log4j,B组件底层使用的日志框架是jul,如果想要统一使用slf4j日志框架,我们也不需要挨个去检查调整相关底层的依赖。

click to enlarge

  SLF4J官网提供了一组桥接传统日志API的的模块,slf4j为我们提供了一些jar包:

jcl-over-slf4j.jar 可以用于替换 commons-logging

log4j-over-slf4j.jar可以替换log4j

jul-to-slf4j.jar可以替换jul

  通过引入这些中间包就可以达到既能够使用slf4j日志框架又能够完美支持项目组件依赖的其他日志框架的目的。

  我们常用的springboot项目选择的日志框架是slf4j+logback的形式,什么意思?就是项目面向的是slf4j,其实底层的日志框架具体实现使用的是logback

在这里插入图片描述

如何在springboot项目中使用slf4j框架?

  官网给出了示例:

import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info("Hello World"); }}

日志的等级分为:tracedebuginfowarnerror,从左往右日志等级依次递增,可以通过在项目中配置日志的输出等级从而达到只输出指定级别的日志信息。下面在新建项目中分别用5中等级打印一下日志信息:

package org.magic.log;import org.junit.jupiter.api.Test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.test.context.SpringBootTest;@SpringBootTestclass LogApplicationTests {
private Logger logger = LoggerFactory.getLogger(getClass()); @Test void contextLoads() {
logger.trace("trace"); logger.debug("debug"); logger.info("info"); logger.warn("warn"); logger.error("error"); }}

在这里插入图片描述

结果只打印出了infowarnerror三种,debugtrace并没有打印出来,说明springboot默认的日志级别是info,项目只会打印info级别以上的日志。

  通过在配置文件中设置日志级别来控制日志输出,我们可以配置全局日志输出级别或者指定某个目录下的日志输出级别:

在这里插入图片描述
示例:设置org.magic.log目录下的文件的输出等级为trace,重新启动项目测试类contextLoads
在这里插入图片描述

日志输出格式

%d 				表示日期时间%thread 		表示线程名称%-3level  		级别从左显示3个字符长度%logger{
50} logger名字最长50个字符,否则按照句点分割%msg 日志信息%n 换行符示例:%d{
yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-3level %logger{
50} --%msg%n

在项目的配置文件中自定义日志的输出格式:

#日志在控制台的输出格式logging.pattern.console=%d{
yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-3level %logger{
50} --%msg%n#日志在日志文件中的输出格式#logging.pattern.file=%d{
yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-3level %logger{
50} --%msg%n

在这里插入图片描述

#将日志信息输出到指定的日志文件中logging.file.name=mylog.log

在这里插入图片描述

转载地址:http://bphwi.baihongyu.com/

你可能感兴趣的文章
android 保存具有不同前缀的同一号码分别为A和B,用其中一个呼叫,通话记录一直显示另一个联系人名字的问题
查看>>
android 在手机中预置联系人/Service Number
查看>>
android 系统语言为英语时,Contacts联系人名字含有特殊前缀后缀(Dr. Mr. Lt等)时的相关问题处理
查看>>
android 短信下,添加联系人,进入联系人多选界面出现联系人电话号码晃动的问题
查看>>
android 对一个合并后的联系人选择编辑,手机屏幕会缓慢变暗后再进入编辑界面的问题
查看>>
正确学习javascript。困惑的指南
查看>>
SERO幻影社区的背景怎么样?几大主流隐私币种技术分析!
查看>>
SERO目前具备的十大技术特点
查看>>
Neo4j CQL语句学习Day3
查看>>
Neo4j CQL学习Day4
查看>>
Mysql 数据库
查看>>
MySQL数据库练习
查看>>
Neo4j学习Day5
查看>>
Tomcat的基本配置
查看>>
Neo4j学习Day6~7
查看>>
Servlet学习笔记
查看>>
JSP相关介绍
查看>>
Session和Cookie
查看>>
数据库系统原理与设计复习笔记
查看>>
MVC设计模式
查看>>