spring-boot笔记--日志

三、Spring Boot日志

1、日志框架

日志的抽象层:JCL、SLF4J、jboss-logging

日志的实现:Log4j JUL、Log4j2 Logback

Spring Boot:底层是Spring、Spring默认是JCL、而Spring Boot选用SLF4j和logback

2、SLF4j

2.1 系统中如何使用

开发的时候,日志记录方法的调用应该调用日志抽象层的方法

首先导入slf4j的jar和logback的jar,可以查看下图

抽象层到框架的方法--来自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");
  }
}

每一个日志都有自己的配置文件,使用slf4j后还是使用日志框架自己本身的配置文件

2.2 多个日志框架统一转成slf4j

如何让系统中所有的日志统一到slf4j

多个框架统一到slf4j的方法--来自slf4j官网

  1. 首先将系统的其它日志框架排除
  2. 用中间包来替换原来的日志框架
  3. 导入slf4j来实现统一框架

2.3 Spring Boot日志关系

我们可以创建一个新的项目,在pom.xml文件右键点击Diagrams–>Show Dependencies,可以看到idea为我们画好的依赖图

其中spring-boot-starter是我们最基本的文件

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>2.2.2.RELEASE</version>
    <scope>compile</scope>
</dependency>

Spring Boot使用它来做我们的日志功能

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    <version>2.2.2.RELEASE</version>
    <scope>compile</scope>
</dependency>

我们可以在依赖图下查看我们的依赖关系,可以看到spring-boot-starter-logging依赖logback-classic来使用logback进行日志记录,其它还有xxx-to-slf4j来将其它的日志框架转换为slf4j

Spring Boot底层也是使用slf4j+logback的方式来进行日志记录,Spring Boot也把其它的日志也转换成slf4j,如果我们要用其它日志框架,一定要把日志的框架依赖移除掉,Spring Boot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志

2.4 Spring Boot日志的使用

  1. 默认配置

    Spring Boot帮我们配置好了日志

    Logger logger = LoggerFactory.getLogger(getClass());
    
    @Test
    void contextLoads() {
    
        //日志的级别trace<debug<info<warn<error
        //我们可以自己调整输出的级别
    	//Spring Boot默认使用的是info级别的,只输出info、warn、error
        logger.trace(() -> "trace");
        logger.debug(() -> "debug");
        logger.info(() -> "info");
        logger.warn(() -> "warn");
        logger.error(() -> "error");
    }
    
  2. 改变配置

    在application.properties里写入

    logging.level.com.包名=trace
    

    可以更改日志级别,没有指定就用Spring Boot默认指定的级别,root级别

    # 会在根目录下生成spboot.log
    logging.file.name=spboot.log
    # 制定完整的路径,可在对应路径下找到
    logging.file.name=G:/spboot.log
    # 在指定路径下创建spring.log,/splog/log是在所在磁盘根目录下创建,name和path同时指定name起作用
    logging.file.path=G:/splog/log
    # 指定控制台输出日志的格式
    logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
    # 指定文件中输出日志的格式
    logging.pattern.file=%d{yyyy-MM-dd} = [%thread] = %-5level = %logger{50} = - %msg%n
    
    日志的输出格式:
    	%d:表示日期和时间
    	%thread:表示线程的名字
    	%-5level:表示级别从左显示5个字符宽度
    	%logger{50}:表示logger名字最长为50个字符,否则按照句点分割
    	%msg:日志消息
    	%n:换行
    
  3. 指定配置

    如果我们要用自己的配置,那么在类路径下放上每个日志框架自己的配置文件,然后Spring Boot就不会使用自己的配置了

    官方文档

    Logging SystemCustomization
    Logbacklogback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy
    Log4j2log4j2-spring.xml or log4j2.xml
    JDK (Java Util Logging)logging.properties

    logback.xml直接被日志框架识别

    logback-spring.xml由Spring Boot加载配置项

    <springProfile name="staging">
        <!-- configuration to be enabled when the "staging" profile is active -->
        <!-- 可以指定在某个环境下生效 -->
    </springProfile>
    
    <springProfile name="dev | staging">
        <!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
    </springProfile>
    
    <springProfile name="!production">
        <!-- configuration to be enabled when the "production" profile is not active -->
    </springProfile>
    

2.5 Spring Boot日志框架的切换

可以按照官网的适配图进行切换,可以查看2.2下的图片,我们可以通过生成依赖图的方式对依赖进行管理,具体引入哪些依赖可以查看官方文档,删除哪些依赖可以查看2.2下的图片

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是一些 Spring Boot 面试时可能会涉及的重要知识点和面试建议: 1. 什么是 Spring BootSpring BootSpring 框架的一个子项目,它基于 Spring 框架,简化了 Spring 应用的配置和开发过程,使得开发者可以更加便捷地创建独立、生产级别的 Spring 应用。Spring Boot 提供了自动化配置、开箱即用的组件和快速启动的能力,使得开发者可以更加专注于业务逻辑的实现。 2. Spring Boot 有哪些优点? - 简化了 Spring 应用的配置和开发过程。 - 集成了众多常用的第三方库,可以快速地搭建项目。 - 提供了自动化配置和开箱即用的组件,使得开发者可以更加专注于业务逻辑的实现。 - 与 Spring Framework 完美集成,可以很方便地使用 Spring 的各种功能。 - 支持多种开发方式,包括传统的 WAR 包部署、嵌入式服务器部署、Docker 容器化部署等。 3. Spring Boot 的核心注解有哪些? - @SpringBootApplication:用于标记 Spring Boot 应用的主类,它包含了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 三个注解,可以简化应用的配置和启动过程。 - @Controller、@Service、@Repository、@Component:用于标记 Spring Bean,可以自动扫描并注册到 Spring 容器。 - @Autowired、@Resource、@Inject:用于依赖注入,可以自动装配 Spring Bean。 4. Spring Boot 的配置文件有哪些? Spring Boot 支持多种配置文件格式,包括 properties、yml、json 等。其,application.properties 或 application.yml 是 Spring Boot 默认的配置文件,它可以放在项目的 classpath 下,也可以通过指定 spring.config.location 属性来指定配置文件的路径。 5. Spring Boot 的自动配置原理是什么? Spring Boot 的自动配置基于条件注解和条件判断,它会根据应用的上下文环境和 classpath 的依赖库来自动配置 Spring Bean。例如,当 classpath 存在 HikariCP 库时,Spring Boot 会自动配置一个 HikariCP 数据源,而不需要手动配置。 6. Spring Boot 如何处理异常? Spring Boot 提供了统一的异常处理机制,可以通过 @ControllerAdvice 和 @ExceptionHandler 注解来处理应用的异常。在异常处理类,可以通过 @ExceptionHandler 注解和方法参数来定义需要处理的异常类型和异常处理逻辑。 7. Spring Boot 如何实现 AOP? Spring Boot 集成了 Spring Framework 的 AOP 功能,可以通过 @Aspect 和 @Around 注解来实现切面编程。在切面类,可以定义需要拦截的方法和拦截逻辑,以实现日志记录、权限控制等功能。 8. Spring Boot 如何实现事务管理? Spring Boot 集成了 Spring Framework 的事务管理功能,可以通过 @Transactional 注解来实现事务控制。在需要进行事务控制的方法上添加 @Transactional 注解,即可开启事务。 9. Spring Boot 如何集成数据库? Spring Boot 支持多种数据库,包括 MySQL、Oracle、MongoDB 等,可以通过在 pom.xml 添加相应的依赖库来实现数据库的集成。同时,Spring Boot 也提供了多种数据库访问方式,包括 JDBC、JPA、MyBatis 等,可以根据实际需求选择合适的方式。 10. Spring Boot 如何实现缓存? Spring Boot 集成了多种缓存框架,包括 Ehcache、Redis、Caffeine 等,可以通过在 pom.xml 添加相应的依赖库来实现缓存功能。同时,Spring Boot 也提供了多种缓存注解,包括 @Cacheable、@CachePut、@CacheEvict 等,可以方便地实现缓存功能。 面试建议: - 对于 Spring Boot 的基本原理和使用方法要有深入了解,并能够熟练使用 Spring Boot 搭建项目。 - 对于 Spring Boot 常用的注解和配置文件要熟练掌握。 - 对于 Spring Boot 的高级功能(如自动配置、AOP、事务管理、缓存等)要有一定的了解,并能够根据实际需求进行应用。 - 在面试要注意表达清楚自己的观点和思路,可以通过实际项目经验来证明自己的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值