springboot2.x实现日志按级别每天输出为日志文件

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的帮助! 

发布了137 篇原创文章 · 获赞 28 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/shenxiaomo1688/article/details/98961301
今日推荐