您现在的位置是:首页 > 后台技术 > JavaJava

springboot实现不同业务的日志打印到不同的文件中(图文)

第十三双眼睛2019-08-08【Java】人已围观

简介这几天有个项目的日志信息比较多,需要把不同业务的日志打印到不同的文件中去,今天在公司搞了很久都没搞定,晚上回来搞,终于搞定了,记录一下。

项目发布到线上,很难保证不出问题,一旦出了问题,就得看日志来解决,但是如果,所有的日志都写在一个文件中,这个文件会非常大,不利于查找,因此,需要把不同业务的日志打印到不同的日志文件中去,这样,文件小,而且业务分开,便于排错。
1准备一个配置文件logback.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{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </layout>
    </appender>
    
    <appender name="request" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>E://log/request/request.log</File>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>%msg%n</pattern>
            <!--<charset>UTF-8</charset>-->
        </encoder> <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--路径-->
            <fileNamePattern>E://log/request/request.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>4</maxHistory>
        </rollingPolicy>
    </appender>
 
    <!--根据日志级别分离日志,分别输出到不同的文件-->
    <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>E://log/info/info.log</File>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>%msg%n</pattern>
            <!--<charset>UTF-8</charset>-->
        </encoder> <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--路径-->
            <fileNamePattern>E://log/info/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>4</maxHistory>
        </rollingPolicy>
    </appender>
 
    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>E://log/error/error.log</File>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>%msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder> <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--路径-->
            <fileNamePattern>E://log/error/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>4</maxHistory>
        </rollingPolicy>
    </appender>
    
    <logger name="requestLogger" additivity="false" level="INFO">
        <appender-ref ref="request"/>
    </logger>
    
    <logger name="infoLogger" additivity="false" level="INFO">
        <appender-ref ref="info"/>
    </logger>
    
    <logger name="errorLogger" additivity="false" level="ERROR">
        <appender-ref ref="error"/>
    </logger>
 
    <root level="DEBUG">
        <appender-ref ref="consoleLog"/>
    </root>
 
</configuration>
2写一个测试文件
package com.xinchen.springboot1.schedue;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


@Component
public class Schedue {
    
    
    public Logger infoLogger = LoggerFactory.getLogger("infoLogger");
    
    public Logger requestLogger = LoggerFactory.getLogger("requestLogger");
    
    public Logger errorLogger = LoggerFactory.getLogger("errorLogger");
    
    
    
    
    
    @Scheduled(cron = "0 0/1 * * * *")
    public void test() {
        requestLogger.debug("requestLogger.debug");
        requestLogger.info("requestLogger.info");
        requestLogger.error("requestLogger.error");
        
        
        infoLogger.debug("infoLogger.debug");
        infoLogger.info("infoLogger.info");
        infoLogger.error("infoLogger.error");
        
        
        errorLogger.debug("errorLogger.debug");
        errorLogger.info("errorLogger.info");
        errorLogger.error("errorLogger.error");
    }
}

 
再电脑中的对应位置出现了这三个文件夹

下面是info里面的内容,只有info日志输出

下面是request里面的内容,只有request日志输出

下面是error里面的日志输出,只有

成功了。

 

Tags:springboot   日志

很赞哦! ()

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

站点信息

  • 网站名称:JavaStudy
  • 建站时间:2019-1-14
  • 网站程序:帝国CMS7.5
  • 文章统计89篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们