1. 基本结构
1.1 目录结构:
1.2 Application对象
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Gmall0105LoggerApplication {
public static void main(String[] args) {
SpringApplication.run(Gmall0105LoggerApplication.class, args);
}
}
1.3 Controller对象
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
public class LoggerController {
public String log(){
System.out.println("123");
return"abc";
}
}
2. 以网页形式返回请求结果
访问方式
直接返回网页
localhost:8080/applog
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class LoggerController {
@RequestMapping("/applog")
public String log(){
return"index.html";
}
}
3. 以非网页形式返回请求结果
3.1 通过在每个方法上加注释控制返回请求的内容
访问方式
直接返回return后面的文本内容
localhost:8080/applog
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class LoggerController {
@ResponseBody // 控制返回非网页请求内容,但是每个方法上都需要加该注释
@RequestMapping("/applog")
public String log(){
System.out.println("123");
return"abc";
}
}
3.2 通过在Controller对象上注释控制返回请求的内容形式
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
//@Controller
@RestController // @RestController = @Controller + @ResponseBody
public class LoggerController {
//@ResponseBody 决定方法的返回是网页还是文本
@RequestMapping("/applog")
public String log(){
System.out.println("123");
return"abc";
}
}
3.3 带参数的请求
加入log参数
发送请求方法:
返回log的值jsonjson
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
//@Controller
@RestController // @RestController = @Controller + @ResponseBody
public class LoggerController {
@RequestMapping("/applog")
public String log(@RequestParam String log) {
System.out.println(log);
return log;
}
}
3.4 以请求体的形式发送
**注意:**该种方法是不是通过网页发送请求,而是通过代码发送请求
通过Slf4j以日志的形式返回请求结果,但是idea要安装lombok插件
3.4.1 在resources目录下新建lombok的配置文件logback.xml
3.4.2 配置logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志输出的存储路径 -->
<property name="LOG_HOME" value="E:/opt/applog/gmall2021" />
<!--appender:追加器 描述如何写入文件中(写在哪,格式,文件的切分)-->
<!--控制台追加器,日志输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--日志格式:直接输出一条日之后换行,再输出下一条日志-->
<pattern>%msg%n</pattern>
</encoder>
</appender>
<!--滚动文件追加器,依据某种方式在文件中追加内容-->
<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--滚动文件的命名方式-->
<fileNamePattern>${LOG_HOME}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<!--日志格式:直接输出一条日之后换行,再输出下一条日志-->
<pattern>%msg%n</pattern>
</encoder>
</appender>
<!-- 将某一个包下日志单独打印日志 -->
<!--管理日志的控制器-->
<!--但独管理其中一个类的日志-->
<logger name="com.xxxxxx.gmall0105.logger.controller.LoggerController"
level="INFO" additivity="false">
<!--false表示该管理器不由root管理器管,日志级别为INFO-->
<!--日志级别 trace debug warn error fatal 级别逐渐高,info界别代表输出info即及info级别以上的日志-->
<!--引用了上面定义的两个追加器,代表及回滚文件,又输出控制台-->
<appender-ref ref="rollingFile" />
<appender-ref ref="console" />
</logger>
<!--管理所有类日志的控制器-->
<root level="error" additivity="false">
<appender-ref ref="console" />
</root>
</configuration>
3.4.3 日志处理
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//@Controller
@RestController // @RestController = @Controller + @ResponseBody
@Slf4j // 将请求返回结果转换成为日志
// @Slf4j 会帮忙不全补充Logger对象的声明和实现代码
// 但是前提是idea需要提前安装 lombok, 否则idea会编译报错
public class LoggerController {
@RequestMapping("/applog")
public String appLog(@RequestBody String logString) {
System.out.println(logString);
log.info(logString);
return logString;
}
}