面试官:Spring Boot 中关于日志工具的使用,我想问你几个常见问题

栏目: IT技术 · 发布时间: 4年前

公众号[ 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框架内置了哪些可扩展接口,咱们一个一个聊

Spring声明式事务处理的实现原理,来自面试官的穷追拷问

Spring MVC相关面试题就是无底洞,反正我是怕了

说实话,面试这么问Spring框架的问题,我快扛不住了

没使用加号拼接字符串,面试官竟然问我为什么

面试官一步一步的套路你,为什么SimpleDateFormat不是线程安全的

都说ThreadLocal被面试官问烂了,可为什么面试官还是喜欢继续问

Java注解是如何玩转的,面试官和我聊了半个小时

如何去除代码中的多次if而引发的一连串面试问题

String引发的提问,我差点跪了

就写了一行代码,被问了这么多问题

面试官:JVM对锁进行了优化,都优化了啥?

synchronized连环问

面试官:Spring Boot 中关于日志工具的使用,我想问你几个常见问题

支持原创,我点【 在看  


以上所述就是小编给大家介绍的《面试官:Spring Boot 中关于日志工具的使用,我想问你几个常见问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

性能之巅

性能之巅

Brendan Gregg / 徐章宁、吴寒思、陈磊 / 电子工业出版社 / 2015-8-15 / 128

《性能之巅:洞悉系统、企业与云计算》基于Linux 和Solaris 系统阐述了适用于所有系统的性能理论和方法,Brendan Gregg 将业界普遍承认的性能方法、工具和指标收集于本书之中。阅读本书,你能洞悉系统运作的方式,学习到分析和提高系统与应用程序性能的方法,这些性能方法同样适用于大型企业与云计算这类最为复杂的环境的性能分析与调优。一起来看看 《性能之巅》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具