SpringBoot - 02 - 自定义LogBack、加载properties中自定义变量
·
接着昨天的项目继续。
项目GitHub:SpringBoot-SpringCloud GitHub地址
主类没有变动,这里就不贴了。
package com.server.vo;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* 在配置文件中配置初始值,通过映射自动加载
* <p>
* 设置配置文件的路径,并设定字符集
* <p>
* 通过@ConfigurationProperties加载properties文件内的配置
* 通过prefix属性指定properties配置的前缀
* <p>
* Component,将普通POJO实例化到Spring容器中
*
* @author CYX
* @create 2018-07-02-19:44
*/
@PropertySource(value = "classpath:application.properties", encoding = "UTF-8")
@ConfigurationProperties(prefix = "person")
@Component
public class PersonVO {
private String name;
private Integer age;
@Override
public String toString() {
return "PersonVO{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
vo对象,通过@PropertySource加载properties配置文件。
通过@ConfigurationProperties中prefix的配置,加载相对应的配置节点参数。
@Component注解,将VO对象实例化到Spring容器中。
看下application.properties配置文件:
#修改端口号
server.port=9000
#项目发布根路径(上下文路径)
server.servlet.context-path=/sp-demo
#自定义logback配置文件
logging.config=classpath:conf/logback-config.xml
#SpringBoot日志设置
#logging.file=./log/01-springboot-demo.log
#logging.level.root=info
person.name=CYX
person.age=2000
这里配置了自定义的logback配置文件的路径,以及PersonVo类对应的配置信息。
看下logback自定义的配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="30 seconds" debug="false">
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!--定义日志文件的存储地址-->
<property name="LOG_HOME" value="./log"/>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- Console 输出设置 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<!-- 显示毫秒数
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>-->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/01-springboot-demo.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- * 通配符 设置log打印级别 对所有类有效TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF-->
<!--将上面的appender添加到root-->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</root>
<!--<logger name="com.boot" level="INFO"></logger>-->
</configuration>
启动程序,用Postman调用接口看下:
再看另一种读取配置文件的方式:
package com.server.vo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* @author CYX
* @create 2018-07-02-20:20
*/
@Component
public class CardVO {
@Value("${cardID}")
private String cardID;
@Value("${cardName}")
private String cardName;
@Override
public String toString() {
return "CardVO{" +
"cardID='" + cardID + '\'' +
", cardName='" + cardName + '\'' +
'}';
}
public String getCardID() {
return cardID;
}
public void setCardID(String cardID) {
this.cardID = cardID;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
}
再看下properties配置文件:
#修改端口号
server.port=9000
#项目发布根路径(上下文路径)
server.servlet.context-path=/sp-demo
#自定义logback配置文件
logging.config=classpath:conf/logback-config.xml
#SpringBoot日志设置
#logging.file=./log/01-springboot-demo.log
#logging.level.root=info
person.name=CYX
person.age=2000
cardID=001
cardName=银行卡
看下修改后的controller文件:
package com.server.controller;
import com.server.vo.CardVO;
import com.server.vo.PersonVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* HelloWorld-Controller-测试
*
* @author CYX
* @create 2018-07-01-20:09
*/
@RestController
public class HelloWorldController {
public static final Logger LOGGER = LoggerFactory.getLogger(HelloWorldController.class);
@Autowired
private PersonVO personVO;
@Autowired
private CardVO cardVO;
@RequestMapping(value = "/sayHello", method = RequestMethod.GET)
public String sayHello() {
LOGGER.info("-----");
LOGGER.info("personVO : " + personVO.toString());
LOGGER.info("cardVO : " + cardVO.toString());
return "Hello Spring Boot , personVO : " + personVO.toString();
}
}
运行程序,通过Postman调用接口:
更多推荐
已为社区贡献3条内容
所有评论(0)