Java开发从工作到原理--Spring Boot单体项目运行日志解析
在Java开发从工作到原理--Spring Boot单体项目构建 中项目启动后打印的日志信息为下图
启动日志
可以看到默认打印的日志级别为INFO级别,对于日志级别的修改可以到项目文件目录下的application.properties文件中通过配置logging.level.root属性值进行修改,修改为DEBUG,项目启动显示信息如下图
DEBUG级别的日志信息比INFO级别信息要多很多
可以通过包名指定该包名下所有日志的日志级别,例如:
对com.example指定日志级别为DEBUG级别后多出红框中日志信息
日志级别分为
- TRACE
- DEBUG
- INFO
- WARN
- ERROR
由上到下日志信息的轻重缓急为由轻到重,日志量由多到少,指定为TRACE时会打印所有级别的日志信息,指定为ERROR时只打印ERROR级别的日志。
现在Spring5.2.2.RELEASE版本的spring-jcl的jar包中Log接口还增加了FATAL级别,而 org.slf4j.Logger日志实现中并没有这一级别。
日志内容由上到下分别是:
1、Banner信息(不是很重要,一般不会想进行配置修改);
2、程序信息,主启动类、电脑名称、进程PID;
3、Spring Boot版本信息,Spring版本信息(pom中指定);
4、profile配置确定信息;
5、tomcat启动信息:绑定端口,tomcat版本(由依赖确定);
6、spring-web的WebApplicationContext初始化成功信息;
7、ThreadPoolTaskExecutor(ExecutorService)初始化信息;
8、actuator endpoint暴露信息;
9、项目暴露访问地址context path为”“;
10、项目启动成功日志;
以上信息中一般可能会修改的信息有:
profile配置:通过spring. profiles. active属性配置当前**的环境,有bean的选择性装配功能。
tomcat绑定端口:通过server.port属性配置tomcat启动后监听的端口。
context path接口访问地址前缀:通过server.servlet.context-path配置,必须以”/“开头,统一控制接口的访问地址。
ThreadPoolTaskExecutor的初始化信息表明Spring boot在启动时会启用一个线程池,可以通过 获取到该线程池,进行相关操作。beanName是applicationTaskExecutor。
actuator是spring boot的程序监控组件,Spring boot2.0版本依赖默认开放两个endpoint
health和Info两个endpoint
可以通过配置management. endpoints. web. exposure. include= '*' 开放所有endpoint,有13个endpoint可供使用
所有endpoint的访问地址json信息
能够通过beans端点查看当前spring容器中所有bean的信息;mappings端点查看所有对外的http接口(RequestMapping体系)信息;env端点可以查看所有properties或者yml文件,启动命令中的配置信息;threaddump端点可以进行线程信息查看。当然接口返回的都是json格式数据,但是结合SBA(Spring Boot Admin)项目,可以进行可视化操作,例如动态修改特定包的日志等级,查看jmx信息。