Springboot 运维实用篇
分为两块程序打包 程序运行
程序打包
基于maven工程下的执行maven的生命周期进行package双击运行
在target目录下生成工程文件.jar
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
打包必须涵盖springboot自带的打包插件,在执行maven的package才能在cmd窗口正常执行否则会显示找不到主清单 因为两种打包方式压缩的文件数不同,携带的文件资源路径不对
cmd快速查找80端口是否占用 netstat -nao | findstr “80”
查看含有字符串80任务列表tasklist | findstr “80”
程序运行
windows下
- 在对应项目工程文件目录下启用终端(cmd)使用java -jar 工程文件.jar 运行查看
linux下
-
基于linux安装jdk和mysql的驱动jar
-
在对应的数据库创建相匹配的数据库表
-
将打包好的工厂文件的安装包保存在linux系统/usr/local/自定义目录或$HOME下
-
在对应项目工程文件目录下启用终端(cmd)使用java -jar 工程文件.jar 运行查看
配置高级
临时属性更换端口
java -jar 工程文件.jar --server.port=端口号
携带多个属性启动Springboot,属性间使用空格分隔
配置分级
config目录下的application配置大于resourses下的application文件
配置文件分类
SpringBoot中4种配置文件
1,2级的配置文件是写在打包完成后在源项目路径下写的配置
1级:file:config/application.yml(最高)
2级:file:application.yml
3级:classpath:config/application.yml
4级:classpath:application.yml(最低)
作用
- 1级和2级留作系统打开设置通用属性,1常用于运维经理进行线上整体项目部署方案调控
- 3级和四级用于系统开发阶段设置通用属性,3级常用于项目经理进行整体项目属性调控
自定义配置文件
当配置多个文件时,配置在后面的文件配置生效
多环境开发
yml配置文件里配置多环境
三个分割线把环境区分开
#应用环境
spring:
profiles:
active: pro
---
# 设置环境
# 生产环境
spring:
profiles: pro
server:
port: 80
---
# 开发环境
spring:
profiles: dev
server:
port: 81
---
# 测试环境
spring:
profiles: test
server:
port: 82
避免泄露信息 分为四个配置信息
properties文件后缀的同上配置
多环境分组开发
各环境中有相同的配置,在配置的时候后加载的覆盖前加载的
引用多环境需要使用逗号分隔
单一环境
dev只是一个环境名称 有各种不同的环境配置
将原有的yml文件分为出各个属性文件:application.dev.yml application-devDB.yml application-devMVC.yml
application.yml里引用配置即可 使用include包含其他配置
application-devDB.yml:写数据库环境配置
application-devMVC.yml :MVC环境配置
spring:
profiles:
active: dev
include: devDB,devMVC
多环境(group 主流)
使用group设定若干环境组 引用哪个环境 自动加载该环境组
spring:
profiles:
active: dev
group:
"dev": devDB,devMVC
"pro": proDB,proMVC
多环境开发控制
maven和springboot都有多环境配置profile
在pom文件中设置多环境 在pom文件里设置了变量 springboot来读
<!--设置多环境-->
<profiles>
<profile>
<id>env_pro</id>
<properties>
<profile.active>pro</profile.active>
</properties>
<!--设置默认环境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>env_dev</id>
<properties>
<profile.active>dev</profile.active>
</properties>
</profile>
</profiles>
当maven与Spirngboot同时对多环境进行控制时,以maven为主,springboot使用@…@占位符读取maven对应的配置属性值
springboot的yml文件读取
spring:
profiles:
active: @profile.active@
group:
"dev": devDB,devMVC
"pro": proDB,proMVC
我们通常是写maven配置为主,让springboot(为辅)来读maven的配置
基于Springboot读取maven配置属性的前提下,如果在idea测试工程时pom.xml每次更新需要手动compile可生效
日志
日志作用
- 编程时期调试代码
- 运营期记录信息
- 记录日常运营重要信息(峰值流量,平均响应时长…)
- 记录应用报错信息(错误堆栈)
- 记录运维过程数据(扩容,宕机,报警…)
日志级别
- trace: 运行堆栈信息,使用率低
- debug:程序员调试代码使用
- info:记录运维过程数据
- warn:记录运维过程报警数据
- error:记录错误堆栈信息
- fatal:灾难信息,合并计入error
日志使用
创建日志对象
引用包文件
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
创建对象
//创建记录日志对象
private static final Logger log = LoggerFactory.getLogger(BookController.class);
对象调用,日志记录
log.debug("debug...");
log.info("info....");
log.error("error...");
log.warn("warn...");
springboot中管理日志级别
在springboot配置文件中进行配置
配置日志组,或者代码包的形式对日志进行级别控制
# 一般是写全局配置日志
# 开启debug模式,输出调试信息,常用于检查系统状况
debug: true
# root设置的大于debug,上面的debug值设置相关于springboot相关的
# root是真个包下的debug
# 设置日志级别,root表示根节点,即对整体应用日志级别
logging:
# 设置分组来定义日志级别
group:
# 分别为哪几个包
ebank: 包1,包二,包三
# 服务包的配置
iservice: com.alibaba
level:
# root是全代码的日志级别
root: debug
# 设置某个包的日志级别
包名: 日志级别
# 设置分组包的日志级别
ebank: warn
快速开发日志对象
1.写一个工具类(死板)
让基类继承工具类来创建日志对象
public class BaseClass {
private Class clazz;
public static Logger log;
public BaseClass(){
clazz = this.getClass();
log = LoggerFactory.getLogger(clazz);
}
}
2.pom文件中引用lombok,使用注解**@Slf4j**
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
使用注解之后产生的日志对象为log,可以快速调用
减少日志的声明对象
@Slf4j
//Rest模式
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping
public String getById(){
System.out.println("SpringBoot is running.....");
log.debug("debug...");
log.info("info....");
log.error("error...");
log.warn("warn...");
return "SpringBoot is running.....";
}
}
日志的输出格式
日志的输出格式控制(一般公司定死,自己不需要写)
在springboot的配置文件中进行修改
设置日志模板格式
logging:
pattern:
# console: "%d - %m %n"
console: "%d %clr(%5p) --- [%16t] %clr(%-40.40c : %m){cyan} %n"
**%clr(%-40.40c : %m){cyan}**表示:向左对齐截40位的类名
百分号后带数字加简写字母:代表该位占多少位字符
-
%clr:颜色显示 给谁用包裹谁,设置颜色是在包裹的括号外加{颜色}
-
%d:日期
-
%m:消息
-
%n:换行
-
%p:日志级别
-
%t:线程名
-
%c:类名
设置日志文件
logging:
file:
#设置日志文件名称
name: server.log
日志文件详细配置
logging:
file:
name: server.log
logback:
# 滚动日志 日志按时间存放 或者 日志文件超出容量再创建新的存储
rollingpolicy:
# 规定日志文件容量大小
max-file-size: 5KB
# 指定日志文件名称格式
file-name-pattern: server.%d{yyyy-MM-dd}.%i.log