《穿越SpringBoot 》 第三章-SpringBoot 的 配置 | 第3节- SpringBoot 的 日志管理

Spring Boot 的日志管理

前题:

借助:IntelliJ IDEAMaven构建工具,以及基于SpringBoot 2.3.4
官人如需使用 Maven 请阅读教程:Maven 构建工具的下载与安装
官人如需使用 IDEA 请阅读教程:IntelliJ IDEA

更多干货:

请阅读:《穿越SpringBoot》系列文章
请参考:Java学习资料

默认日志格式:

Spring Boot内部采用的是Commons Logging进行日志记录,但在底层为Java Util Logging、Log4J2,SpringBoot使用默认日志框架是Logback,并用INFO级别输出到控制台。
2020-10-17 10:59:23.641  INFO 8060 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-10-17 10:59:23.641  INFO 8060 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1207 ms
2020-10-17 10:59:23.891  INFO 8060 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-10-17 10:59:24.039  INFO 8060 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path '

日志输出具体元素:

时间日期:精确到毫秒,可以用于排序

日志级别:ERROR,WARN,INFO,DEBUG,TRACE

进程ID

分隔符:采用- - -标识实际日志的开始

线程名:方括号括起来(可能会截断控制台输出)

Logger名:通常使用源代码的类名

日志内容:我们输出的消息

日志输出:

SpringBoot的日志级别:TRANCE < DRBUG < INFO < WARN < ERROR <FATAL < OFF
如果设置为WARN,则低于WARN级别的不会输出。

日志配置:

application.properties 文件中定义:

在这里插入图片描述
在这里插入图片描述

#root 日志级别以WARN级别输出
#修改日志配置
#logging.level.root=trace
#logging.level.root=debug
#logging.level.root=info
#logging.level.root=warn
#logging.level.root=error
#logging.level.root=fatal
#logging.level.root=off

指定类型输出界别:com.example.boot日志以DEBUG级别输出

在这里插入图片描述

#com.example.boot日志以DEBUG级别输出
logging.level.com.example.boot=DEBUG

默认情况下:SpringBoot将日志输出到控制台,不会写到日志文件中。

如果要编写除控制台之外的日志文件,则需要在application.properties中设置logging.file或logging.path属性。

①logging.file

设置文件,可以是绝对路径,也可以是相对路径。

#相对路径
logging.file=log/my.log
#绝对路径
logging.file=/log/my.log
#把日志信息写入日志文件,会自动生成
logging.file=f:\\springboot\\info.log
#配置控制台日志显示格式
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
#配置文件中日志显示格式
logging.pattern.file=%d{yyyy/MM/dd-HH:mm:ss}  [%thread] %-5level %logger- %msg%n
②logging.path

设置目录,会在该目录下新建spring.log文件,并写入日志内容。

logging.path=/var/log

二者不能同时使用,如果同时使用,则只有logging.file生效。

默认情况下,日志文件大小达到10MB会切分一次,产生新的日志文件, 默认界别为:ERROR、WARN、INFO

日志颜色编码:

如果终端支持ANSI,默认情况下会给日志上个色,提高可读性,可以在配置文件中设置spring.output.ansi.enabled来改变默认值

ALWAYS: 启用ANSI颜色的输出。
DETECT : 尝试检测ANSI着色功能是否可用。
NEVER: 禁用ANSI颜色的输出。

如果想修改日志默认色值,可以通过使用%clr关键字转换。
比如想使文本变为黄色%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}。
目前支持的颜色有(blue、cyan、faint、green、magenta、red、yellow)

自定义日志配置:

由于日志在ApplicationContext之前就初始化好了,所以SpringBoot为我们提供了logging.config属性,方便我们配置自定义日志文件。默认情况它会根据日志的依赖自动加载
Logging SystemCustomization
JDK (Java Util Logging)logging.properties
Log4j2、ERRORlog4j2-spring.xml 或 log4j2.xml
Logbacklogback-spring.xml、logback-spring.groovy、logback.xml、logback.groovy

pom.xml 依赖:

<dependency>
 
    <groupId>org.springframework.boot</groupId>
 
    <artifacteId>spring-boot-starter-logging</artifacted>
 
</dependency>
但在实际开发中不需要直接添加该依赖。【有可能】 将来你导入的jar或者启动器如果它依赖的日志框架跟Spring boot默认依赖的有冲突时,找到他,如下方式排除 依赖即可。
  • <depdency>
    	<!--坐标-->
        <exclude>
        	<!--排除的坐标-->
        </exclude>
    </depdency>
    

总结:

待完善…
本教程基于最新的spring-boot-starter-parent:2.3.4RELEASE编写,目前很多大佬都写过关于SpringBoot的教程了,如有雷同,请多多包涵.
### 部署前后端分离项目的准备 为了成功地将基于IDEA开发的Vue+Spring Boot前后端分离项目部署至Linux服务器,需遵循一系列操作流程来确保应用能够稳定运行。这不仅涉及前端Vue项目的构建与传输,还包括后端Spring Boot服务的配置以及整个系统的优化设置。 ### 打包Vue前端项目 在本地环境中完成Vue项目的最终版本编译工作至关重要。通过执行`npm run build`命令可以生成用于生产环境的静态资源文件夹dist[^1]。此过程会依据vue.config.js中的设定自动生成适用于线上发布的HTML/CSS/JS等静态资产。 ```bash cd /path/to/vue/project npm install npm run build ``` 上述指令首先安装依赖项并随后触发构建任务,从而产出压缩后的静态网页资料供后续上传之用。 ### 处理Spring Boot后端工程 对于采用Maven作为构建工具管理的Java应用程序而言,在IDEA内利用内置功能简化了打包步骤。具体来说: - 清除现有目标目录下的残留数据以防止潜在冲突; - 调用package生命周期阶段自动下载所需库并将整个Web应用封装成可独立执行的JAR/WAR档案形式保存于target子路径之下[^3]。 ```xml <build> <plugins> <!-- 插入maven插件 --> ... </plugins> </build> ``` 以上XML片段展示了pom.xml中定义的一部分POM结构化描述符,其中包含了有关如何组装成品的信息。 ### 构建Shell自动化脚本 编写一段简单的shell script有助于提高效率,减少重复劳动带来的错误风险。该批处理文件应当具备如下特性: - 接受必要的参数输入(如远程主机地址、用户名密码组合)以便灵活适应不同场景需求; - 实现SCP协议传送方式把经过预处理过的webapp组件迁移到指定位置; - 设置SELinux安全上下文标签赋予适当读写权限给新加入的对象; ```sh #!/bin/bash # 定义变量存储登录凭证和其他必要信息 HOST="your.server.ip" USER="root" PASSWORD="pass" # 使用scp复制文件到远端机器上的特定目录 sshpass -p $PASSWORD scp -r ./frontend/dist/* ${USER}@${HOST}:/var/www/html/ sshpass -p $PASSWORD ssh ${USER}@${HOST} "chmod -R 755 /var/www/html/" echo "Frontend deployment completed." ``` 这段代码实现了从当前计算机向另一台网络点转移已打包好的前端页面素材,并调整其访问控制属性使之能被正常加载显示出来。 ### 文件传输与权限分配 借助SFTP客户端或者前述提到的方法之一实现跨平台间的数据交换之后,则有必要针对目的站点内的各个组成部分授予恰当的操作许可级别。通常情况下,可通过修改inode元数据里的mode字段达到这一目的——即运用`chmod`实用程序改变相应bitmask位模式表示法所对应的特权集合状态。 ```bash sudo chmod +x start.sh sudo chown www-data:www-data -R /opt/springboot-app/ ``` 这里的第一条语句使得名为start.sh的外壳程序获得被执行的能力;而第二条则指定了Apache/Nginx Web server进程的身份标识拥有者及其所属组别对位于/opt/springboot-app/内部的所有实体享有完全掌控权。 ### 开启防火墙端口映射 考虑到网络安全策略可能阻挡外部请求抵达内部监听的服务实例,因此务必确认相关联的通信信道畅通无阻。可以通过编辑iptables规则链表或是调用firewalld守护进程接口开放HTTP(S)/其他自定义业务逻辑交互所需的TCP端口号范围[^2]。 ```bash sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --reload ``` 这两行命令分别指示永久性添加一条允许进入流量穿越公共区域到达第80号端点的新规例记录,紧接着刷新全局过滤器列表使更改即时生效。 ### 启动应用程序 最后一步就是激活已经就绪的应用容器。如果选择了jar包的形式分发的话,那么可以直接依靠java虚拟机解释执行入口类main()函数启动后台线程池提供RESTful API接口响应能力。 ```bash nohup java -jar spring-boot-demo.jar & tail -f nohup.out ``` 此处采用了nohup机制绕过终端挂起信号影响长期存活的任务进程,并且重定向标准输出流至日志文件方便日后排查故障原因所在之处。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值