Spring日志

概述

日志的功能

系统监控

数据采集

日志审计

sout和Springboot比较

之前一直都是通过sout来打印日志,但是SpringBoot项目启动默认就会打印日志,那么我们自己打印的日志和SpringBoot打印的日志有什么不同呢?

java 复制代码
@RestController
@RequestMapping("/logger")
public class LoggerController {
    @RequestMapping("/print")
    public String print(){
        System.out.println("打印日志");
        return "日志打印成功";
    }
}

我们通过sout打印的日志就比SpringBoot打印的日志就少了很多的信息,所以SpringBoot内置了日志框架Slf4j,我们在程序直接调用Slf4j来输出日志

日志使用

打印日志

打印日志的步骤:

1.在程序中的到日志对象

2.使用日志对象写出想要打印的内容

java 复制代码
private static final Logger logger = LoggerFactory.getLogger(LoggerController.class);
    @RequestMapping("/print")
    public String print(){
        logger.info("SpringBoot打印的日志");
        System.out.println("打印日志");
        return "日志打印成功";

日志框架

Slf4j框架不是日志的真正实现

门面模式(外观模式)

门面模式:提供了一个向外的统一接口,用来访问子系统的接口,让子系统更加方便去使用

引入Sjl4f框架即日志门面,应用程序和日志框架就有了统一的API接口

日志格式

日志级别

日志配置

配置日志级别

fatal(致命信息,既然已经严重程度是非常大的,就已经不需要我们去观察)

error

warn

info

debug

trace

配置整体的日志级别

java 复制代码
logging:
  level:
    root: info

配置具体某个包或者类的日志级别

java 复制代码
logging:
  level:
    root: trace
    com.Kon.demo.controller: trace

日志持久化

绝对路径和相对路径都是可以的

java 复制代码
  file:
    path: logger/
    name: logger2/springboot.log

注:1.name不仅可以指出路径还可以对文件进行命名

2.如果两个存在,以file.name为准

配置日志文件分割

日志太多不好查看就需要进行分割

java 复制代码
  logback:
    rollingpolicy:
      max-file-size: 1MB
      file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

配置日志格式

java 复制代码
  pattern:
    console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'
    file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'

更简单的日志输出

每次进行日志输出就要使用

java 复制代码
private static final Logger logger = LoggerFactory.getLogger(LoggerController.class);

很繁琐,我们现在只需要使用一个注释就可以解决

java 复制代码
@Slf4j
@RestController
@RequestMapping("/logger")
public class LoggerController {
    @RequestMapping("/print")
    public String print(){
        log.error("打印 error 的日志");
        log.warn("打印 warn 的日志");
        log.info("打印 info 的日志");
        log.debug("打印 debug 的日志");
        log.trace("打印 trace 的日志");
        System.out.println("打印日志");
        return "日志打印成功";
    }
}
相关推荐
像我这样帅的人丶你还4 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩4 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
tntxia5 小时前
Mybatis的日志输入
java
亦暖筑序6 小时前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式
用户298698530149 小时前
Java 实现 Word 文档加密与权限解除
java·后端
Yeats_Liao10 小时前
14:Servlet中的页面跳转-Java Web
java·后端·架构
未秃头的程序猿10 小时前
告别"if-else地狱"!Java 21模式匹配,代码优雅了10倍
java·后端·面试
鹤望兰67510 小时前
字节跳动国际支付-后端开发-三面面经
java
Flittly11 小时前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
RainCity11 小时前
Java Swing 自定义组件库分享(十二)
java·笔记·后端