SpringBoot 日志打印

一. 自定义打印日志

开发者自定义打印日志实现步骤:

• 在程序中得到日志对象

• 使用日志对象的相关语法输出要打印的内容.

得到日志对象:

//日志工厂需要将需要打印的类的类型传递进去,这样我们才知道日志的归属类,才能更方便的定位到文体类
private static Logger logger= LoggerFactory.getLogger(LogController.class);

注意: Logger 对象是属于 org.slf4j 包下的,不要导错包

使用日志对象打印日志:

    @RequestMapping("/log")
    public void log(){
        String mesg="今天是周五,我要成为Java高手";
        logger.trace("trace -> "+mesg);
        logger.debug("debug -> "+mesg);
        logger.info("debug -> "+mesg);
        logger.warn("warn -> "+mesg);
        logger.error("error -> "+mesg);
    }

打印日志效果:

在代码中我们明明打印了五次,但为什么只打印了三条日志信息呢? 这就又涉及到了日志级别

二. 日志级别 

2.1 日志级别作用

1. 日志级别可以帮我们筛选出重要的信息,比如设置日志级别为error ,那么就可以只看程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了,从而节省开发者信息筛选的时间.

2. 日志级别可以控制不同环境下,一个程序是否需要打印日志,如开发环境我们需要很详细的信息,而生产环境为了保证性能和安全性就会输出尽量少的日志,而通过日志的级别就可以实现此需求.

2.2 日志级别的分类与使用

日志级别:

• trace:微量,少许的意思,级别最低;

• debug:需要调试的时候的关键信息打印;

• info:普通的打印信息(默认日志级别);

• warn:警告,不影响使用,但需要注意的问题;

• error:错误信息,级别较高的错误日志信息;

• fatal:致命的,因为代码异常导致程序退出执行的时间(只有系统崩溃的时候才能输出的日志级别)

日志级别顺序:

SpringBoot 日志打印_第1张图片

级别越高,接收到的消息就越少,如果设置了 warn 就只能收到 warn、error、fatal 级别的日志了

日志级别的设置 

日志级别配置只需要在配置文件中设置“logging.level” 配置项即可:

#整个项目的日志级别
logging.level.root=warn
#给文件夹单独设置级别(level后跟对应的包名)
logging.level.www.logPrint.LogController2=warn
logging.level.www.logPrint.LogController=trace

为什么Spring Boot 可以打印日志?并设置日志级别?

因为SpringBoot 内置了两个日志框架:SLF4J + LogBack

SLF4J:让开发者使用和调用框架(底层实现日志打印的框架很多,开发者无需关心调用哪个框架,开发者只需要向SLF4J提供需求就行了)

LogBacd:最底层实现日志相关操作的框架

 三. 日志的持久化

日志的持久化能够保留到我们的磁盘上,方便发现问题后追溯问题

#设置日志文件的目录
logging.file.path=E:\\Code
#配置日志文件名
logging.file.name=E:\\Code\\2023_12_30
#配置日志文件名(直接写名字会在项目目录中创建一个日志文档)
logging.file.name=2023_12_30

四. 更简单的日志输出-lombok

安装插件:

SpringBoot 日志打印_第2张图片

添加依赖 :


	org.projectlombok
	lombok
	true

输出日志:

//相当于@ResponseBody + @Controller
@RestController
@Slf4j
public class LogController {
//    private Logger logger
//            = LoggerFactory.getLogger(LogController.class);
    @RequestMapping("/log")
    public void log(){
        String mesg="今天是周五,我要成为Java高手";
        log.trace("trace -> "+mesg);
        log.debug("debug -> "+mesg);
        log.info("info -> "+mesg);
        log.warn("warn -> "+mesg);
        log.error("error -> "+mesg);
    }
}

注:使用 @Slf4j 注解,在程序中使用log对象即可输出日志,并且只能使用log对象才能输出,这是lombok 提供的对象名.

五. lombok原理解释

Java程序的运行原理:

 SpringBoot 日志打印_第3张图片

Lombok 的作用如下图所示:

 SpringBoot 日志打印_第4张图片

lombok 能够打印日志的密码就在 target 目录里面,target 为项目最终执行的代码,查看 target 目录如下 :

 SpringBoot 日志打印_第5张图片

在编译时期,Lombok将 .java 文件编译成 .class 文件时,自动生成变量名为 log 的 Logger 对象

其他常用注解:

SpringBoot 日志打印_第6张图片

你可能感兴趣的:(spring,boot,java,spring)