目录
程序打包与运行(window)
现在我们把程序做完以后,用户可以通过浏览器访问我们的服务器,这也是测试整个程序的过程,但是这一套过程是有问题的,什么问题呢?一旦你下班儿回家了,你把电脑背回家了,那你的客户怎么访问你的程序呢?说的简单点儿,你电脑都断网了,他怎么能访问的?因此实际的上线运维过程不可能是这样的一种形式,那应该是什么样?
我们会有一台专用的服务器,把我们的程序放在它上面运行,那这个时候该如何做呢?两个环节,第一,要把idea中的程序给抽取出来,变成一独立的程序包,然后把这个程序包放到这台服务器上,并且运行这台服务器,这台服务器呢是长期运行的,这样就能保障我们的客户能够通过他的浏览器或者手机端正常访问,整个过程其实分成两块儿,第一块儿程序打包,第二块儿程序在服务器上运行。
此时在浏览器打开即可。
1.SpringBoot工程可以基于java环境下独立运行jar文件启动服务
2.SpringBoot工程执行mvn命令package进行打包
3.执行jar命令: java -jar 工程名.jar
springboot在linux环境下部署:
配置高级
临时属性
临时属性在idea下测试
在Program arguments:里填写的参数(属性值)都会注入到args里面
配置文件4级分类
临时属性具有很强的风险性,为了提高安全性还是需要配置文件来处理。
程序员开发时的配置和经理上线时的配置信息是不一样的,此时如何处理?springboot提供了一套机制,可以让我们在现有的配置基础上再做一层配置,按这种配置可以覆盖原先的配置,就不用在命令行上输入那么多的临时属性了。
简而言之,resources目录下是给程序员做的,config目录下是给项目经理做的(该配置文件为第2级),它在做项目上线前的统一的配置管理。
假如说配置文件涉密等级很高,不可能将配置信息(如数据库密码)告诉你。在运维阶段这配置文件又多了一级,叫做在工程目录层下的这个配置文件,要覆盖开发的时候的配置文件(即springboot运行配置的优先级更高)。
但是运维人上面还有一个boss,比如运维组的组长,此时在工程目录层下创建config包,在这个包下创建配置文件(即第4级文件),他又会覆盖前面的配置文件。
同一层级 pro生效(properties > yml > yaml),不同层级,层级高则生效
自定义配置文件
如何让自己的配置文件生效呢?两种办法。
多环境开发
yaml版
什么时候多环境呢?说白了就是,现在开发程序的时候,在自己机器上的那是开发环境,到了测试那边儿环境肯定不一样,连的库啊什么的都不一样,不会是本机的了,到了生产环境上的东西也不一样,也就是说每一种不同的环境它其实对应的配置是有点儿区别的,通常我们自己开发环境更方便,到了生产环境这些IP地址啊什么的都会变。
我们用什么环境,就直接设置什么环境即可。
结果:
1.多环境开发需要设置若干种常用环境,例如开发、生产、测试环境
2. yaml格式中设置多环境使用 — 区分环境设置边界
3.每种环境的区别在于加载的配置属性不同
4.启用某种环境时需要指定启动时使用该环境
多文件版
多环境发各种各样的配置信息都集中在一起,是很容易暴露信息的,并且在同一个文件维护起来也不方便,所以我们要把每一个信息都独立出来。
1.可以使用独立配置文件定义环境属性
2.独立配置文件便于线上系统维护更新并保障系统安全性
多环境开发的独立配置文件书写技巧
根据功能将其分别开来,想更换的时候会更加方便。就是不停的做细粒度控制,如果要使用多个,用include就可以实现。
注意:后加载的配置会覆盖前面加载的配置中已有的属性,而我们主启动的这一个环境,他是最后一个加载的,不管你这里面设什么,通通都以他的配置为准。
从Spring2.4版开始使用group属性替代include属性,降低了配置书写量使用,group属性定义多种主环境与子环境的包含关系。
多环境开发控制
用maven控制boot的环境,Maven中设置多环境属性:
<!--Maven中设置多环境属性-->
<profiles>
<profile>
<id>dev_env</id>
<properties>
<profile.active>dev</profile.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>pro_env</id>
<properties>
<profile.active>pro</profile.active>
</properties>
</profile>
<profile>
<id>test_env</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
</profiles>
SpringBoot中引用Maven属性:
执行Maven打包指令,并在生成的boot打包文件.jar文件中查看对应信息
修改pom.xml 文件后,启动没有生效 在maven里手动 compile 即可
1.当Maven与 SpringBoot同时对多环境进行控制时,以Mavn为主 ,
SpringBoot使用@. . @占位符读取Maven对应的配置属性值
2.基于SpringBoot读取Maven配置属性的前提下,如果在Idea下测试
工程时pom. xml每次更新需要手动compile方可生效
日志基础操作
代码中使用日志工具记录日志
创建记录日志的对象:
private static final Logger log = LoggerFactory.getLogger(BookController.class);
添加日志记录操作:
@RestController
@RequestMapping("/books")
public class BookController {
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...";
}
}
设置日志输出级别:
# 开启 debug 模式,输出调试信息,常用于检查系统运行状况
debug: true
# 设置日志级别, root 表示根节点,即整体应用日志级别
logging:
level:
root: debug
设置日志组,控制指定包对应的日志输出级别:
logging:
# 设置分组
group:
# 自定义组名,设置当前组中所包含的包
ebank: com.zqf.controller,com.zqf.service,com.zqf.dao
iservice: com.alibaba
level:
root: info
# 设置某个包的日志级别
#com.zqf.controller: debug
# 为对应组设置日志级别
ebank: warn
- 日志用于记录开发调试与运维过程消息
- 日志的级别共6种,通常使用4种即可,分别是DEBUG,INFO,WARN,ERROR
- 可以通过日志组或代码包的形式进行日志显示级别的控制
快速创建日志对象Logger
使用lombok提供的注解@Slf4j简化开发,减少日志对象的声明操作
@Slf4j
//Rest模式
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping
public String getById(){
System.out.println("springboot is running...2");
log.debug("debug...");
log.info("info...");
log.warn("warn...");
log.error("error...");
return "springboot is running...2";
}
}
日志输出格式控制
设置日志输出格式:
logging: pattern: console: "%d - %m%n"
其中%d:日期,%m:消息,%n:换行
logging:
pattern:
# console: "%d - %m%n"
console: "%d %clr(%5p) --- [%16t] %clr(%-40.40c){cyan} : %m %n"
%5p:对齐 %clr():颜色 %t:线程名 %c:类名 {cyan}:一种颜色
文件记录日志
日志记录到文件及其日志文件格式的设置
logging:
file:
name: server.log
logback:
#设置滚动的日志
rollingpolicy:
max-file-size: 4KB #超过这个大小之后自动存储,再来一个新文件
file-name-pattern: server.%d{yyyy-MM-dd}.%i.log
#自定义文件名 eg:server.2020-01-01.0.10g
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99458.html