1. 基本结构

1.1 目录结构:

spring 获取服务器文件 springboot获取服务器信息_json

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参数

发送请求方法:

http://localhost:8080/applog?log=jsonjson

返回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

spring 获取服务器文件 springboot获取服务器信息_spring_02

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;
    }
}