4、启动日志优化
4.1 启动日志
第一步: 在 resource 目录下添加 logback-spring.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 修改一下路径-->
<property name="PATH" value="./log"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %blue(%-50logger{50}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>-->
<Pattern>%d{ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>
</encoder>
</appender>
<appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PATH}/trace.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${PATH}/trace.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
</layout>
</appender>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PATH}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${PATH}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
</layout>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--错误日志记录到文件-->
<root level="ERROR">
<appender-ref ref="ERROR_FILE" />
</root>
<!--记录到文件-->
<root level="TRACE">
<appender-ref ref="TRACE_FILE" />
</root>
<!--控制台打印-->
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
第二步:启动项目,查看效果
4.2 忽略 log 目录
第一步:在 .gitignore 中配置忽略
第二步:查看 commit
4.3 修改启动文案
第一步:修改启动类 WikiApplication
可以使用 IDEA 配置成这样的模板,但是别忘了在配置文件中显式配置端口号!
package com.zibo.wiki;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;
@SpringBootApplication
public class WikiApplication {
// 日志
private static final Logger LOG = LoggerFactory.getLogger(WikiApplication.class);
public static void main(String[] args) {
// 修改启动文案
SpringApplication app = new SpringApplication(WikiApplication.class);
Environment env = app.run(args).getEnvironment();
LOG.info("启动成功");
LOG.info("地址: \thttp://127.0.0.1:{}", env.getProperty("server.port"));
}
}
第二步:修改 application.properties 配置文件
# 启动文案需要从这里获取端口号,即使默认是8080,也需要显式写出来才能拿到!
server.port=8080
第三步:启动项目
5、开发 Hello World 接口
第一步:创建一个 controller 包
第二步:创建 HelloController 类
package com.zibo.wiki.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("hello")
public String hello(){
return "Hello World!";
}
}
第三步:访问 http://127.0.0.1:8080/hello 查看效果(省略)
6、使用 HTTP Client 测试接口
6.1 使用 HTTP Client 测试接口
使用 IDEA 自带的 HTTP Client 插件!
第一步:在项目根目录下创建 http 目录,并创建文件 test.http
名字可以任意取,后缀名必须是 .http
第二步:test.http 文件内容
# 快捷键:gtr
GET http://localhost:8080/hello
Accept: application/json
###
第三步:测试 hello 接口
第四步:编写一个 post 带参数的接口
package com.zibo.wiki.controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("hello")
public String hello(){
return "Hello World!";
}
@PostMapping("/helloPost")
public String helloPost(String name){
return "Hello World! " + name;
}
}
第四步:在 test.http 编写测试代码
# 快捷键:gtr
GET http://localhost:8080/hello
Accept: application/json
###
# 快捷键:ptrp
POST http://localhost:8080/helloPost
Content-Type: application/x-www-form-urlencoded
name=zibo
###
第五步:测试 post 接口
6.2 结果验证
第一步:修改 test.http
# 快捷键:gtr
GET http://localhost:8080/hello
# 我们目前返回的是字符串而不是json,会报错,所以暂将其注释掉
# Accept: application/json
# 这个类似单元测试
# test-hello 是名字
# function() 里面类似可以写一些日志
> {%
client.test("test-hello", function() {
client.log("测试/hello接口");
client.log(response.body);
client.log(JSON.stringify(response.body)); // 虽然idea没有提示JSON,但是可以用
client.assert(response.status === 200, "返回码不是200");
client.assert(response.body === "Hello World", "结果验证失败");
});
%}
###
# 快捷键:ptrp
POST http://localhost:8080/helloPost
Content-Type: application/x-www-form-urlencoded
name=zibo
###
第二步:修改 hello 接口返回的内容
@RequestMapping("hello")
public String hello(){
return "Hello World!00000000";
}