【SpringBoot学习04】运维相关知识清单

1. 打包与运行

刚开始做开发学习的小伙伴可能在有一个知识上面有错误的认知,我们天天写程序是在Idea下写的,运行也是在Idea下运行的。但是实际开发完成后,我们的项目是不可能运行在自己的电脑上的。
我们以后制作的程序是运行在专用的服务器上的,简单说就是将你做的程序放在一台独立运行的电脑上,这台电脑要比你开发使用的计算机更专业,并且安全等级各个方面要远超过你现在的电脑。
那我们的程序如何放置在这台专用的电脑上呢,这就要将我们的程序先组织成一个文件,然后将这个文件传输到这台服务器上。这里面就存在两个过程,一个是打包的过程,另一个是运行的过程

1.1 打包

SpringBoot程序是基于Maven创建的,在Maven中提供有打包的指令,叫做package。本操作可以在Idea环境下执行。

mvn package

在这里插入图片描述
打包完成之后就会生成一个jar包,在我们工程目录的target文件夹下面
在这里插入图片描述
这里需要特别关注两个点
特别关注1:如果你的计算机中没有安装java的jdk环境,是无法正确执行上述操作的,因为程序执行使用的是java指令。

特别关注2:在使用向导创建SpringBoot工程时,pom.xml文件中会有如下配置,这一段配置千万不能删除,否则打包后无法正常执行

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

1.2 运行

找到生成的jar包所在的文件夹,选中文件夹上方的目录地址,输入cmd打开命令行窗口,执行如下指令

java -jar 项目名称(注意空格分隔)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ok,我们的程序就在我们的服务器上跑去来了,而不是在我们的idea里面。

2. 配置高级

2.1 临时属性设置

目前我们的程序包打好了,可以发布了。但是程序包打好以后,里面的配置都已经是固定的了,比如配置了服务器的端口是8080。如果我要启动项目,发现当前我的服务器上已经有应用启动起来并且占用了8080端口,这个时候就尴尬了。难道要重新把打包好的程序修改一下吗?比如我要把打包好的程序启动端口改成80。

SpringBoot提供了灵活的配置方式,如果你发现你的项目中有个别属性需要重新配置,可以使用临时属性的方式快速修改某些配置。方法也特别简单,在启动的时候添加上对应参数就可以了。

java –jar springboot.jar –-server.port=80

如果你发现要修改的属性不止一个,可以按照上述格式继续写,属性与属性之间使用空格分隔。

java –jar springboot.jar –-server.port=80 --logging.level.root=debug

2.2 配置文件分类

SpringBoot提供了配置文件和临时属性的方式来对程序进行配置。其实这个配置文件我们一直在使用,只不过我们用的是SpringBoot提供的4级配置文件中的其中一个级别。4个级别分别是:

  • 类路径下配置文件(一直使用的是这个,也就是resources目录中的application.yml文件)
  • 类路径下config目录下配置文件
  • 程序包所在目录中配置文件
  • 程序包所在目录中config目录下配置文件

总体上来说,4种配置文件如果都存在的话,有一个优先级的问题,说白了就是加入4个文件我都有,里面都有一样的配置,谁生效的问题。上面4个文件的加载优先顺序为

  1. file :config/application.yml 【最高】
  2. file :application.yml
  3. classpath:config/application.yml
  4. classpath:application.yml 【最低】

总结:

  • 项目类路径配置文件:服务于开发人员本机开发与测试
  • 项目类路径config目录中配置文件:服务于项目经理整体调控
  • 工程路径配置文件:服务于运维人员配置涉密线上环境
  • 工程路径config目录中配置文件:服务于运维经理整体调控

2.3 yml多文件开发

将所有的配置都放在一个配置文件中,尤其是每一个配置应用场景都不一样,这显然不合理,于是就有了将一个配置文件拆分成多个配置文件的想法。拆分后,每个配置文件中写自己的配置,主配置文件中写清楚用哪一个配置文件就好了。

主配置文件
在这里插入图片描述
环境配置文件
在这里插入图片描述
application-pro.yml

server:
port: 8081

application-pro.test

server:
port: 8082

总结

  1. 可以使用独立配置文件定义环境属性

  2. 独立配置文件便于线上系统维护更新并保障系统安全性

3. 日志

日志其实就是记录程序日常运行的信息,主要作用如下:

  • 编程期调试代码
  • 运营期记录信息
  • 记录日常运营重要信息(峰值流量、平均响应时长……)
  • 记录应用报错信息(错误堆栈)
  • 记录运维过程数据(扩容、宕机、报警……)

3.1 添加日志记录操作

@RestController
@RequestMapping("/books")
public class BookController extends BaseController {
private static final Logger log = LoggerFactory.getLogger(BookController.class);
	@GetMapping
	public String getById(){
			System.out.println("springboot is running...");
			log.debug("debug ...");
			log.info("info ...");
			log.warn("warn ...");
			log.error("error ...");
			return "springboot is running...";
		}
}

代码的时候每个类都要写创建日志记录对象,这个可以优化一下,使用前面用过的lombok技术给我们提供的工具类即可。

基于lombok提供的@Slf4j注解为类快速添加日志对象

//为类快速添加日志对象
@Slf4j
//Rest模式开发
@RestController
@RequestMapping("/books")
public class BookController {

    //private static final Logger log = (Logger) LoggerFactory.getLogger(BookController.class);

    @GetMapping
    public String getById(){
        System.out.println("springboot is running");
        log.debug("debug info...");
        log.error("error info...");
        log.info("info info...");
        log.warn("warn info...");
        return "springboot is running";
    }
}

在这里插入图片描述

3.2 设置日志输出级别

日志的级别分为6种,分别是:

  • TRACE:运行堆栈信息,使用率低
  • DEBUG:程序员调试代码使用
  • INFO:记录运维过程数据
  • WARN:记录运维过程报警数据
  • ERROR:记录错误堆栈信息
  • FATAL:灾难信息,合并计入ERROR
#设置日志级别,root表示根节点,即整体应用日志级别
logging:
	level:
    	root: debug

一般情况下,开发时候使用DEBUG,上线后使用INFO,运维信息记录使用WARN即可。

3.3 日志输出格式控制

日志已经能够记录了,但是目前记录的格式是SpringBoot给我们提供的,如果想自定义控制就需要自己设置了。先分析一下当前日志的记录格式。

在这里插入图片描述
了解日志的记录格式之后,我们就可以自定义日志输出格式了。

logging:
  pattern:
  	 console: "%d %clr(%5p) --- [%16t] %c %n"
  file:
    name: server.log

来看一下我们自定义输出日志的格式
在这里插入图片描述
虽然使用上述格式可以将日志记录下来了,但是面对线上的复杂情况,一个文件记录肯定是不能够满足运维要求的,通常会每天记录日志文件,同时为了便于维护,还要限制每个日志文件的大小。下面给出日志文件的常用配置方式:

logging:
	logback:
    	rollingpolicy:
        	max-file-size: 5KB
            file-name-pattern: server.%d{yyyy-MM-dd}.%i.log
            #server.2022-04-07.1.log

在这里插入图片描述
以上格式是基于logback日志技术设置每日日志文件的设置格式,要求容量到达5KB以后就转存信息到第二个文件中。文件命名规则中的%d标识日期,%i是一个递增变量,用于区分日志文件。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值