SpringBoot(常用配置使用、SLF4J + LogBack日志配置)

一、快速创建SpringBoot项目(IDEA)

1、file--New--Project--Spring Initialzier选中JDK版本,选中一直下一步就可以。

项目结构图如下:

二、SpringBoot常用配置设置

1、使用application.yml配置文件,为了区别正式/测试环境,我分别添加了另外两个yml文件,如下图:

 

 通过spring:profiles:active: dev来设置具体使用哪个yml

 2、一些常用的配置介绍

 

 

下图是我的application-dev.yml文件

debug: false
#前缀相同的配置项,idea会自动进行归纳     值前面一定有个空格!!
server:
 port: 7000                                 #/设置端口
 servlet:
   context-path: /myspringboot             #/上下文:比如同时开启多个项目共用同一个端口会有问题,这样可以避免,访问:http://127.0.0.1:7000/myspringboot/
spring:
  mvc:
    date-format: yyyy-MM-dd                #/输入  Spring MVC中对输入参数的格式化
  jackson:
    time-zone: GMT+8                       #/输出  设置JSON 日期序列化输出格式,北京时间相对伦敦有8个小时时差所以使用G
    date-format: yyyy-MM-dd HH:mm:ss       #/设置时间格式
  datasource:                              #/数据库连接配置
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://10.0.91.23:3306/dbperson?autoReconnect=true&useSSL=false&characterEncoding=utf-8
    username: root
    password: 123
  thymeleaf:
    cache: false  #/开启thymeleaf缓存,Thymeleaf热部署。注意这里有大坑,还要设置file->setting->build->complier-> Build Project Auto... 勾选

 

 3、日志配置(SLF4J + LogBack)   

SJF4J是门面是标准     LogBack是框架

直接将logback-spring.xml 拷贝到 resources文件夹下面,会自动生成日志文件,logback-spring.xml 如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<!--定义日志保存的路径-->
	<!--1.更改默认的logback.xml为logback-spring.xml
		SpringBoot当看到logback-spring.xml文件存在的时候,才会启动日志的环境切换
		logback.xml文件没法做到
		2. 在需要切换的环境上增加springProfile标签
	-->
	<springProfile name="dev">
		<property name="LOG_HOME" value="d:/logs/dev/" />
	</springProfile>
	<springProfile name="prd">
		<property name="LOG_HOME" value="d:/logs/prd/" />
	</springProfile>
	<!--定义一个控制台输出器,名为console-->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<!--按pattern指定的格式输出日志,编码为UTF-8-->
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread]  %logger{30} - %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	<!--定义一个日滚动(每天生成一份)的日志文件-->
	<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!--按pattern指定的格式输出日志,编码为UTF-8-->
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread]  %logger{30} - %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
		<!-- 定义保存的文件名 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--%d{yyyy-MM-dd}代表每天生成一个新的日志-->
			<fileNamePattern>${LOG_HOME}/mysprintboot_%d{yyyy-MM-dd}.log</fileNamePattern>
			<!--日志最多保存90天,也就是90份-->
			<maxHistory>90</maxHistory>
		</rollingPolicy>
		<!-- 在日滚动文件中,强制只保存错误级别以上信息 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>
	<!-- 定义日志全局最低输出级别是INFO,同时向控制台和日滚动文件输出 -->
	<root level="INFO">
		<appender-ref ref="console" />
		<appender-ref ref="file" />
	</root>
</configuration>

springProfile节点:分别设置每个配置文件对应的日志路径;

fileNamePattern节点:设置日志文件名;

root节点:设置日志记录级别 (Debug->info->warn->error 四个级别)

  生成日志结果如下:

  

 

4、读取自定义配置文件属性值

我在resources文件夹下面新增我的配置文件config.properties

 

 

现在我需要在页面上读取并显示出来,做法如下:

在入口文件添加:

//在入口类启动时加载config.properties
@PropertySource("classpath:config.properties")

 在controller 方法里面注入配置信息,有两种方式,如下:

@Controller
public class MyController {
    @Value("${app.name}")              //1、通过@Value注解,直接获取配置属性值
    private String name;
    @GetMapping(value="/config1")
    public String getConfigName()
    {
        return name;
    }

    @Resource //相同功能可使用@Autowire    //2、将我的配置属性封装成一个AppConfig的类中,注入
    private AppConfig appConfig;
    @GetMapping(value="/config2")
    public String getConfigInfo()
    {
        return appConfig.getInfo();
    }
}

AppConfig.java  代码如下:

@Component                               //这是一个组件类,写上这个注解,SPringBoot会在启动时加载它
@ConfigurationProperties(prefix="app") //将所有app前缀的属性自动赋值给对应Bean 属性
@Component                               //这是一个组件类,写上这个注解,SPringBoot会在启动时加载它
@ConfigurationProperties(prefix="app")  //将所有app前缀的属性自动赋值给对应Bean 属性
public class AppConfig {
    private String name;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getInfo()
    {
        return "姓名:"+name;
    }
}

结果如下图所示:

 

posted @ 2018-12-14 16:13  Quentin-wy  阅读(346)  评论(0编辑  收藏  举报