slf4j 不一樣業務日誌寫到不一樣的文件中

在resources目錄下添加logback.xml文件spring

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <springProperty name="LOG_PATH" source="logging.path" defaultValue="/home/admin/xxx/logs" />
    <!--自定義控制檯日誌格式-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--系統INFO級別日誌-滾動記錄日誌-->
    <appender name="SYS_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--被寫入的文件名,能夠是相對目錄,也能夠是絕對目錄,若是上級目錄不存在會自動建立,沒有默認值-->
        <File>${LOG_PATH}/sys_info.log</File>
        <!--若是是 true,日誌被追加到文件結尾,若是是 false,清空現存文件,默認是true。-->
        <append>true</append>
        <!--級別過濾器(LevelFilter),此處只打INFO級別的日誌-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <!--下面2個屬性表示匹配規定level的接受打印,不匹配的(即非INFO)拒絕打印-->
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 最經常使用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--設置滾動文件規則,若是直接使用 %d,默認格式是 yyyy-MM-dd-->
            <fileNamePattern>${LOG_PATH}/sys_info.log.%d</fileNamePattern>
            <!--保留30天的日誌-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <encoder charset="UTF-8">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--系統ERROR級別日誌-滾動記錄日誌-->
    <appender name="SYS_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${LOG_PATH}/sys_error.log</File>
        <append>true</append>
        <!--此處只打ERROR級別的日誌-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/sys_error.log.%d</fileNamePattern>
            <maxHistory>12</maxHistory>
        </rollingPolicy>

        <encoder charset="UTF-8">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!--業務business-1日誌-->
    <appender name="bs1_Appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${LOG_PATH}/api.log</File>
        <append>true</append>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/api.log.%d</fileNamePattern>
            <maxHistory>12</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- additivity屬性爲false,表示此logger的打印信息再也不向上級傳遞(注:該值默認爲true,logger的日誌信息會依次向上級傳遞,最高級logger爲root,若是不加則至少打印2次,自己一次,root一次)-->
    <logger name="bs1" additivity="false" level="INFO">
        <appender-ref ref="bs1_Appender"/>
    </logger>
    <!--info和error分開打印,注:ERROR > WARN > INFO > DEBUG > TRACE-->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="SYS_INFO"/>
        <appender-ref ref="SYS_ERROR"/>
    </root>

</configuration>

在application.yml文件中添加日誌目錄api

logging.path=/media/data/tomcatlogs

在使用類中調用對應業務名字的loggertomcat

@Component
public class AService {

    private final Logger log = LoggerFactory.getLogger("bs1");
    
    public void fun1(){
    
     log.info("{}","msg");
     
    }
    
    }

其中bs1就是業務的名字app

相關文章
相關標籤/搜索