Springboot 运维实用篇

分为两块程序打包 程序运行

程序打包

基于maven工程下的执行maven的生命周期进行package双击运行

在target目录下生成工程文件.jar

maven目录结构

1
2
3
4
5
6
7
8
<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配置文件里配置多环境

三个分割线把环境区分开

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#应用环境
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环境配置

1
2
3
4
spring:
profiles:
active: dev
include: devDB,devMVC

多环境(group 主流)

使用group设定若干环境组 引用哪个环境 自动加载该环境组

1
2
3
4
5
6
spring:
profiles:
active: dev
group:
"dev": devDB,devMVC
"pro": proDB,proMVC

多环境开发控制

maven和springboot都有多环境配置profile

在pom文件中设置多环境 在pom文件里设置了变量 springboot来读

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!--设置多环境-->
<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文件读取

1
2
3
4
5
6
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

日志使用

创建日志对象

引用包文件

1
2
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

创建对象

1
2
//创建记录日志对象
private static final Logger log = LoggerFactory.getLogger(BookController.class);

对象调用,日志记录

1
2
3
4
log.debug("debug...");
log.info("info....");
log.error("error...");
log.warn("warn...");

springboot中管理日志级别

在springboot配置文件中进行配置

配置日志组,或者代码包的形式对日志进行级别控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 一般是写全局配置日志
# 开启debug模式,输出调试信息,常用于检查系统状况
debug: true

# root设置的大于debug,上面的debug值设置相关于springboot相关的
# root是真个包下的debug
# 设置日志级别,root表示根节点,即对整体应用日志级别
logging:
# 设置分组来定义日志级别
group:
# 分别为哪几个包
ebank: 包1,包二,包三
# 服务包的配置
iservice: com.alibaba
level:
# root是全代码的日志级别
root: debug
# 设置某个包的日志级别
包名: 日志级别
# 设置分组包的日志级别
ebank: warn

快速开发日志对象

1.写一个工具类(死板)

让基类继承工具类来创建日志对象

1
2
3
4
5
6
7
8
9
public class BaseClass {
private Class clazz;
public static Logger log;

public BaseClass(){
clazz = this.getClass();
log = LoggerFactory.getLogger(clazz);
}
}
2.pom文件中引用lombok,使用注解**@Slf4j**
1
2
3
4
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>

使用注解之后产生的日志对象为log,可以快速调用

减少日志的声明对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@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的配置文件中进行修改

1
2
3
4
5
设置日志模板格式
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:类名

设置日志文件

1
2
3
4
logging:
file:
#设置日志文件名称
name: server.log
日志文件详细配置
1
2
3
4
5
6
7
8
9
10
logging:
file:
name: server.log
logback:
# 滚动日志 日志按时间存放 或者 日志文件超出容量再创建新的存储
rollingpolicy:
# 规定日志文件容量大小
max-file-size: 5KB
# 指定日志文件名称格式
file-name-pattern: server.%d{yyyy-MM-dd}.%i.log

运维篇告一段落