公众号[ JavaQ ]原创,专注分享 Java 基础原理分析、实战技术、微服务架构、分布式系统构建,诚邀点赞关注!
面试官 :Spring Boot中日志输出有关注过吗?
小小白 :有研究过。
面试官 :使用Starters方式快速构建项目,那么默认使用的日志 工具 是什么?
小小白 :如果项目使用Starters,则默认使用Logback作为日志记录工具,并且默认配置下日志只会在控制台输出。
面试官 :默认情况下,日志输出哪些级别的日志信息?
小小白 :默认配置下,日志将记录ERROR、WARN和INFO级别的日志信息,当然你也可以开启调试模式记录更多信息。
面试官 :那如何开启调试模式?
小小白 :添加命令行参数和修改属性配置两种方式。命令行启动应用时指定开启调试模式,例如执行命令:java -jar test.jar --debug;在application.properties中配置debug=true,或在application.yml中配置debug:true,则开启调试模式。
面试官 :那是不是开启调试模式后,日志只记录DEBUG级别的日志?
小小白 :不是,开启调试模式并不是改变日志记录的级别为DEBUG,而且日志输出更多级别的日志信息。
面试官 :默认配置下Spring Boot应用启动时,日志会输出一个banner图案,输出的内容可以修改吗?
小小白 :可以的,在src/main/resource目录下新建一个banner.txt文本,里面写入自己想修改的内容即可。
面试官 :那要是想关闭这个banner的输出,如果操作?
小小白 :有两种方法:修改默认配置和硬编码。在application.properties或application.yml中添加spring.main.banner-mode=off;在应用启动类中,通过如下代码关闭。
SpringApplication application = new SpringApplication(SpringbootApplication.class);
application.setBannerMode(Banner.Mode.OFF);
application.run(args);
面试官 :日常的开发及未来的投产都会将日志输出到指定文件,这个如何配置?
小小白 :在application.properties中配置logging.file属性,用于指定日志文件的位置(可以是相对位置或绝对位置)和名称,它将会把日志信息记录到对应位置下的日志文件中,例如配置logging.file=app.log,将会在当前classpath下创建app.log,并将日志信息记录到这个文件中。这个日志文件配置同样可以配置在application.yml中。
也可以在application.properties中配置logging.path属性,用于指定日志文件的位置,可以是相对位置或绝对位置 ,同时生成的日志文件名称固定为spring.log,例如配置logging.path=/logs,将会在根目录下创建logs目录,并生成spring.log日志文件,日志信息记录到这个文件中。这个日志文件位置配置同样可以配置在application.yml中。
面试官 :如果在配置文件中logging.file和logging.path都配置了属性值,会是什么效果?
小小白 :如果同时配置了logging.file和logging.path,最终生效的只是logging.file。
面试官 :一般在生产环境都会配置日志文件达到一定大小会自动归档,Spring Boot有默认规则吗?
小小白 :日志信息输出到文件后,默认情况下使用Logback作为日志记录工具,会记录ERROR、WARN和INFO级别的日志信息,并且日志文件大小超过10MB后,日志文件将会被打包成.gz的压缩文件,且压缩文件名称会 排序 累加,例如app.log.2020-04-20.0.gz、app.log.2020-04-20.1.gz。
面试官 :这个默认的10MB太小了,如何修改?
小小白 :通过在application.properties中配置logging.file.max-size,它的属性值需要带单位,可以是KB、MB或GB,单位大小写不敏感都可以使用,例如配置最大大小为100MB,则logging.file.max-size=100MB,需要注意的是这个属性配置仅对默认Logback生效。
面试官 :要修改日志输出的级别,如何操作?
小小白 :修改日志记录的级别可以在application.properties或application.yml中配置,添加logging.level.<logger-name>=<level>,其中level可以是TRACE、DEBUG、INFO、WARN、ERROR、FATAL或OFF,对于root级的配置可以使用logging.level.root,例如如下一些配置示例:
logging.level.root=INFO
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
面试官 :Spring Boot是不是只支持Logback?
小小白 :Spring Boot 2.0版本支持Java Util Logging、Log4J2和Logback日志工具,默认使用Logback,如果不想使用默认日志工具,可以自定义修改。
面试官 :那如果项目中要使用Log4J2作为日志工具,如何实现?
小小白 :第一步,将Log4J2的相关jar包添加到classpath目录下。可以使用spring-boot-starter-log4j2来添加jar,不过需要注意的是spring-boot-starter和spring-boot-starter-web会包含默认的Logback的jar,所以添加依赖时需要排除掉这些包含的jar。第二步,在classpath目录下创建log4j2-spring.xml或log4j2.xml日志配置文件,Spring Boot推荐使用带有-spring的文件名作为日志配置文件名。如果不想在classpath目录下创建log4j2-spring.xml或log4j2.xml日志配置文件,还可以通过在application.properties中配置logging.config属性来指定日志配置文件。
面试官 :有时我们想不同的环境有不同的日志输出配置,这个可以通过配置实现吗?
小小白 :使用Logback作为日志工具,Spring Boot对它支持了多环境切换。可以在logback-spring.xml中使用<springProfile>标签来区分日志配置对哪个环境生效。
往期推荐 :
面试官:Spring框架内置了哪些可扩展接口,咱们一个一个聊
面试官一步一步的套路你,为什么SimpleDateFormat不是线程安全的
都说ThreadLocal被面试官问烂了,可为什么面试官还是喜欢继续问
支持原创,我点【 在看 】
以上所述就是小编给大家介绍的《面试官:Spring Boot 中关于日志工具的使用,我想问你几个常见问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 【基础面试题】常见的Java面试问题2
- 【基础面试题】常见的Java面试问题2
- Spring 常见面试问题
- 15个经典的Spring面试常见问题
- Redis的那些最常见面试问题
- 10个常见的Redis面试"刁难"问题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。