在 foodie-dev 的 pom 文件中,点击右键,选择“图”->“显示依赖”
找到 mapper-spring-boot-stater -> spring-boot-stater -> spring-boot-stater-logging,发现 Spring Boot 默认加载了日志相关依赖, 有 log4j,slf4j,logback,我们这里只用 log4j,因此需要排除默认加载的日志依赖,单独引入 log4j。
在 foodie-dev 下的 pom 文件中添加排除日志依赖的语句
移除默认日志
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
启动项目,提示日志框架缺失的错误
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 的配置文件没有找到
创建 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
启动项目,此时不会提示任何警告
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:日志的表现形式,如下图所示
一般生成环境日志输出都会加时间 %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 /><br />查看控制台,info 日志级别及以上已经打印出来<br /><br />修改 foodie-dev-api 模块下的 log4j.properties 文件,将控制台日志级别改为 DEBUG
log4j.appender.stdout.threshold=DEBUG ``` 重启项目,打开浏览器访问 http://localhost:8088/hello
查看控制台,debug 日志已经打印出来了
在 D:\logs\foodie-dev-api 目录下出现了相应日志文件
【注意】
要整合自定义的日志框架,需要排除原先的日志框架 spring-boot-starter-logging