spring boot 您所在的位置:网站首页 springboot开发环境生产环境的切换 spring boot

spring boot

2024-04-08 20:20| 来源: 网络整理| 查看: 265

Spring Boot日志常用配置:

# 日志输出的地址:Spring Boot默认并没有进行文件输出,只在控制台中进行了打印 logging.file=/home/zhou # 日志级别 debug-> info -> warning -> error # 默认级别为 info # 如果设置了debug=true的时候,日志级别会自动降低为debug # ROOT代表默认全局设置 logging.level.ROOT=INFO # 可以设置指定包的输出级别,这样的话,指定的包,级别以下的日志就不在打印或者写入日志文件 logging.level.org.springframework=ERROR logging.level.org.apache=ERROR

日志文件默认一天生成一个文件,但是有一个问题,不能分割日志文件。

小项目可以一天生成一个日志文件,但是像淘宝那种级别的可能每分钟都需要生成一个日志文件,这种情况下,可以使用logback自带的详细的配置文件来开发。

注释掉刚才配置的,把logback.xml文件放到resource目录下,具体可以去官网:https://logback.qos.ch/

 参考:http://www.cnblogs.com/warking/p/5710303.html

logback.xml示例:

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log 30 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ERROR ACCEPT DENY 10MB

 参考另一例子:

/> ${CONSOLE_LOG_PATTERN} [%date{yyyy-MM-dd HH:mm:ss.SSS}] [ %-5level] %logger{96} - %msg%n UTF-8 ${LOG_HOME}/info_log_%d{yyyyMMdd}.%i.log 200 MB 2 INFO false [%date{yyyy-MM-dd HH:mm:ss.SSS}] [ %-5level] %logger{96} - %msg%n UTF-8 ${LOG_HOME}/error_log_%d{yyyyMMdd}.%i.log 200 MB 2 ERROR false https://c6fb8bf2a380850a514:[email protected]/15 WARN

 

开发、生产环境切换和自定义配置:

配置文件有properties和yml文件格式,yml格式文件有易读,易修改,自动分类等优点,可以使用yml格式配置文件(看个人喜好)

application.yml文件示例:

debug: true server: servlet: context-path: app1 spring: http: encoding: charset: utf-8 thymeleaf: cache: true datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/test driver-class-name: com.mysql.jdbc.Driver

IDEA开发工具会把开头相同的, 自动归类,这样以后修改的时候,就不用吧配置文件从头到尾读一遍,害怕漏了某些配置

如果properties和yml同时存在,以properties文件为准

 

环境配置,dev开发环境和部署环境连接的数据库地址、debug模式等等都是不同的,为了区分dev开发环境配置和生产环境配置,可以创建两个yml文件,什么环境使用相应的配置文件:

application.yml:公共配置文件,里面可以通过spring.profiles.active=dev来指定使用哪个配置文件 application-dev.yml:开发环境配置文件 application-prd.yml:生产环境配置文件

注意:

当公共配置文件application.yml和dev.yml(或prd.yml)同时存在同一个配置的时候,以dev.yml(prd.yml)配置文件为主, 当配置项只在公共application.yml文件中有的时候,以公共配置为主 可以把公共配置项放到application.yml中 日志环境配置有点不一样:

1. 更改默认的logback.xml为logback-spring.xml

  SpringBoot当看到logback-spring.xml文件存在的时候,才会启动日志的环境切换,而logback.xml文件无法做到

2.在需要切换的环境上,增加springProfile标签

会根据上面spring.profiles.active指定的值是什么来自动切换

............................. spring boot自定义配置:

  Spring Boot 内置的配置项远远不能支撑我们的程序运行,在项目设计的时候,往往因为扩展性的需要,项目需要预留很多自定义设置项,Spring Boot 允许我们配置自定义选项。

在Spring Boot 中,有两种方式使用自定义选项

@Value单个属性注入 @ConfigurationProperties类型安全加载

1. 首先创建一个config.properties配置文件(properties文件一般都是单独保存我们的配置文件信息的),简单的写几个自定义信息

app.name=淘宝2号店 app.version=1.0.0 app.description=这是一家盗版的淘宝店 # -连接符说明使用的时候,后面的S要大写(pageSize) app.page-size=20 # 是否显示广告 app.show-advert=true app.website=http://www.taobao2.com

2. 注意,我这里使用了中文,properties文件不支持中文,如果想支持中文,需要设置: 

file -> settings -> Editor -> File Encodings ,勾选Transparent native-to-ascii conversion选项

3. 自定义配置信息写好了,但是程序不知道啥玩意啊,需要程序启动时,加载配置配置信息

@SpringBootApplication @PropertySource("classpath:config.properties") // 在入口类启动时,加载config.properties public class Test1Application { public static void main(String[] args) { SpringApplication.run(Test1Application.class, args); } }

4.1:@Value方式: 写一个controller类,测试是否能读取到自定义配置信息

package com.htmltest.test1.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MyController { @Value("${app.name}") private String name; @Value("${app.page-size}") private Integer pageSize; @RequestMapping(value = "/name") public String getAppName(){ return name; } }

搞定!!

现在发现,如果每个Controller类都重复定义一遍,properties里面那么多配置信息,很麻烦,可以使用另外一种方式:

4.2:@ConfigurationProperties方式:创建一个自定义AppConfig类,并且设置set和get方法

package com.htmltest.test1.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component // 这是一个组件类,写上这个注解,Spring Boot启动时会加载它 @ConfigurationProperties(prefix = "app") // 将所有app前缀的属性,自动赋值给对应的Bean属性 // 比如:name对应app前缀的app.name赋值,pageSize对应app.page-size赋值 public class AppConfig { private String name; private Integer pageSize; private String description; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public Boolean getShowAdvert() { return showAdvert; } public void setShowAdvert(Boolean showAdvert) { this.showAdvert = showAdvert; } private String version; private Boolean showAdvert; }

这样的话,每个Controller类中都可以方便的使用了:

@RestController public class MyController { // @Resource 和 @Autowired功能一样效果 // private AppConfig appConfig; @Autowired private AppConfig appConfig; @RequestMapping(value = "/name") public String getAppName(){ return appConfig.getName(); } }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有