在 foodie-dev 的 pom 文件中,点击右键,选择“图”->“显示依赖”
    image.png
    找到 mapper-spring-boot-stater -> spring-boot-stater -> spring-boot-stater-logging,发现 Spring Boot 默认加载了日志相关依赖, 有 log4j,slf4j,logback,我们这里只用 log4j,因此需要排除默认加载的日志依赖,单独引入 log4j。
    image.png
    在 foodie-dev 下的 pom 文件中添加排除日志依赖的语句

    1. 移除默认日志

      1. <dependency>
      2. <groupId>org.springframework.boot</groupId>
      3. <artifactId>spring-boot-starter</artifactId>
      4. <exclusions>
      5. <exclusion>
      6. <groupId>org.springframework.boot</groupId>
      7. <artifactId>spring-boot-starter-logging</artifactId>
      8. </exclusion>
      9. </exclusions>
      10. </dependency>

      启动项目,提示日志框架缺失的错误
      image.png
      2.添加日志框架依赖

           <!--引入日志依赖 抽象层 与 实现层-->
           <dependency>
               <groupId>org.slf4j</groupId>
               <artifactId>slf4j-api</artifactId>
               <version>1.7.30</version>
           </dependency>
           <dependency>
               <groupId>org.slf4j</groupId>
               <artifactId>slf4j-log4j12</artifactId>
               <version>1.7.30</version>
           </dependency>
      

      slf4j-log4j12 是将 slf4j 和 log4j 进行了整合,添加依赖后重启项目,此时控制台不会再报错,而是提示 log4j 的配置文件没有找到
      image.png

    2. 创建 log4j.properties 并且放到 foodie-dev-api 模块下的 src/main/resources 目录

      log4j.rootLogger=DEBUG,stdout,file
      log4j.additivity.org.apache=true
      log4j.appender.stdout=org.apache.log4j.ConsoleAppender
      log4j.appender.stdout.threshold=INFO
      log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
      log4j.appender.stdout.layout.ConversionPattern=%-5p %c{1}:%L - %m%n
      log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
      log4j.appender.file.layout=org.apache.log4j.PatternLayout
      log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH-mm
      log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
      log4j.appender.file.Threshold=INFO
      log4j.appender.file.append=true
      log4j.appender.file.File=/logs/foodie-dev-api/mylog.log
      

      启动项目,此时不会提示任何警告
      image.png
      log4j.rootLogger=DEBUG,stdout,file:把指定级别以上的日志信息输出到指定的一个或者多个位置,这里是把 debug 级别日志输出到 stdout 和 file 上面
      log4j.appender.stdout=org.apache.log4j.ConsoleAppender:指定 stdout 为 控制台
      log4j.appender.stdout.threshold=INFO:控制台的打印日志级别是 info 以上
      log4j.appender.stdout.layout.ConversionPattern=%-5p %c{1}:%L - %m%n:日志的表现形式,如下图所示
      image.png
      一般生成环境日志输出都会加时间 %d{yyyy-MM-dd HH:mm:ss}
      log4j.appender.file=org.apache.log4j.DailyRollingFileAppender:定义 file 为每日滚动文件,当一天结束后,日志会以天为单位进行保存
      log4j.appender.file.File=/logs/foodie-dev-api/mylog.log:日志保存的位置
      修改 foodie-dev-api 模块下的 HelloController 文件,添加日志记录 ```java package com.imooc.controller;

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore;

    import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession;

    /**

    • @author 92578
    • @since 1.0 */ @ApiIgnore @RestController public class HelloController {

      final static Logger logger = LoggerFactory.getLogger(HelloController.class);

      @GetMapping(“/hello”) public Object hello() {

       logger.info("info: hello~");
       logger.debug("debug: hello~");
       logger.warn("warn: hello~");
       logger.error("error: hello~");
      
       return "Hello World~";
      

      }

      @GetMapping(“/setSession”) public Object setSession(HttpServletRequest request) {

       HttpSession session = request.getSession();
       // 设置 session
       session.setAttribute("userInfo", "new user");
       // 设置过期时间
       session.setMaxInactiveInterval(3600);
       // 获取 session
       session.getAttribute("userInfo");
       // 移除 session
      

      // session.removeAttribute(“userInfo”);

       return "ok";
      

      } }

      启动项目,打开浏览器访问 [http://localhost:8088/hello](http://localhost:8088/hello)<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/390086/1598024479053-91b288e0-abf9-4016-b997-a6011b582951.png#align=left&display=inline&height=121&margin=%5Bobject%20Object%5D&name=image.png&originHeight=121&originWidth=477&size=7358&status=done&style=none&width=477)<br />查看控制台,info 日志级别及以上已经打印出来<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/390086/1598024590198-6234f319-c1d4-4bb2-8fcf-50c152653b6a.png#align=left&display=inline&height=91&margin=%5Bobject%20Object%5D&name=image.png&originHeight=91&originWidth=369&size=7592&status=done&style=none&width=369)<br />修改 foodie-dev-api 模块下的 log4j.properties 文件,将控制台日志级别改为 DEBUG
      

      log4j.appender.stdout.threshold=DEBUG ``` 重启项目,打开浏览器访问 http://localhost:8088/hello
      查看控制台,debug 日志已经打印出来了
      image.png
      在 D:\logs\foodie-dev-api 目录下出现了相应日志文件
      image.png
      【注意】
      要整合自定义的日志框架,需要排除原先的日志框架 spring-boot-starter-logging