1、新建web工程,引入lombok包,(如果没有安装lombok插件,先安装插件)
2.在pom.xml文件中添加对lombok的支持
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
3.在resources文件夹新建application.yml文件,application.yml文件配置如下:
#debug: true
logging:
level:
#指定包,指定类,或者直接root
#root: debug
com.cobra.logdemo.controller: debug
#日志输出配置二选一,只有两个都配置,只有一个生效,
#区别是path默认生成的是spring.log文件,而path生成的是直接命名的文件,可以是相对路径也可以是绝对路径
file: var/my.log
#path: var/my.log
# pattern:
#控制台日志输出格式配置,仅对控制台有效
#console: "%d -%msg%n"
4.在resources文件夹新建logback-spring.xml文件,logback-spring.xml配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--输出日志格式-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d - %msg%n
</pattern>
</layout>
</appender>
<!--只保存info日志-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>
%d - %msg%n
</pattern>
</encoder>
<!--滚动输出策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>d:/logtest/info/info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!--只保存warn日志-->
<appender name="fileWarnLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>
%d - %msg%n
</pattern>
</encoder>
<!--滚动输出策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>d:/logtest/warn/warn.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!--只保存error日志-->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
%d - %msg%n
</pattern>
</encoder>
<!--滚动输出策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>d:/logtest/error/error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileWarnLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</configuration>
5.在需要日志的类加上注解@Slf4j,不需要在再添加private static Logger log=LoggerFactory.getLogger(UserController.class);之类的代码了。然后在需要打印地方加上代码,log.info("需要打印的内容"),在需要记录异常的地方使用log.error(e.getMessage(),e);这样项目运行的时候,就会把info级别的日志写入的info.log文件中,把error级别的日志写入到error.log文件中,参照下面的例子:
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class ParamsTest {
@Autowired
private GlucoseService gluSerivce;
@Test
public void test() {
fail("Not yet implemented");
}
@Test
public void saveTest() {
Glucose glucose=new Glucose("758", "3.58", "2019-08-09 11:28:20", "1", "0");
try {
int i=gluSerivce.addGlu(glucose);
if (i>0) {
log.info("上传血糖数据成功!");
}
} catch (Exception e) {
log.error(e.getMessage(),e);
}
}
}
启动测试以后,在指定的目录分别生成了info、error和warn文件夹,如下图:
打开info文件夹,看到生成了info.2019-08-09文件,文件内容如下:
打开error文件夹,生成了error.2019-08-09文件,文件内容如下:
备注:上传成功以后,为了测试的需要,特意去修改了代码,让其产生异常。
至此,SpringBoot按级别每天单独生成日志文件配置成功。
感谢https://blog.csdn.net/weixin_37138899/article/details/88841693的帮助!