溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用logback自定義deviceId,并根據(jù)deviceId生成各自的日志文件

發(fā)布時(shí)間:2021-10-14 14:44:53 來源:億速云 閱讀:195 作者:iii 欄目:編程語言

這篇文章主要介紹“如何使用logback自定義deviceId,并根據(jù)deviceId生成各自的日志文件”,在日常操作中,相信很多人在如何使用logback自定義deviceId,并根據(jù)deviceId生成各自的日志文件問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用logback自定義deviceId,并根據(jù)deviceId生成各自的日志文件”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

1.層級目錄截圖

如何使用logback自定義deviceId,并根據(jù)deviceId生成各自的日志文件

2.pom依賴,注意--idea下載lombok插件

<!--lombok --><dependency>   <groupId>org.projectlombok</groupId>   <artifactId>lombok</artifactId>   <version>1.16.16</version></dependency><!--sl4j --><dependency>   <groupId>org.slf4j</groupId>   <artifactId>slf4j-api</artifactId>
   <version>1.7.25</version>
</dependency>

3.logback文件

<?xml version="1.0" encoding="UTF-8"?><configuration debug="false" scan="true" scanPeriod="1 seconds">    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">        <encoder>            <pattern>%d{HH:mm:ss.SSS} [%thread] %level %logger{35} - %msg%n</pattern>        </encoder>    </appender>    <appender name="siftInfo" class="ch.qos.logback.classic.sift.SiftingAppender">        <!--discriminator鑒別器,設(shè)置運(yùn)行時(shí)動(dòng)態(tài)屬性,siftingAppender根據(jù)這個(gè)屬性來輸出日志到不同文件 -->        <discriminator>            <key>deviceId</key>            <defaultValue>unknown</defaultValue>        </discriminator>        <sift>            <!--具體的寫日志appender,每一個(gè)deviceId創(chuàng)建一個(gè)文件-->            <appender name="FILE-${deviceId}" class="ch.qos.logback.core.rolling.RollingFileAppender">                <append>true</append>                <encoder charset="UTF-8">                    <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5level %logger{35} - %msg%n</pattern>                </encoder>                <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">                    <!--定義文件滾動(dòng)時(shí)的文件名的格式--><!--                    <fileNamePattern>./logs/%d{yyyyMMdd}/deviceId-${deviceId}-%i.log</fileNamePattern>-->                    <fileNamePattern>D:/mylogs/%d{yyyyMMdd}/deviceId-${deviceId}-%i.log</fileNamePattern>                    <maxFileSize>500MB</maxFileSize>                    <maxHistory>60</maxHistory>                    <totalSizeCap>20GB</totalSizeCap>                </rollingPolicy>                <filter class="ch.qos.logback.classic.filter.ThresholdFilter">                    <level>INFO</level>                </filter>            </appender>        </sift>    </appender>    <root level="info">        <appender-ref ref="console"/>        <appender-ref ref="siftInfo"/>    </root></configuration>

4.測試類

import org.apache.log4j.MDC;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class TestLogback {public static final Logger logger = LoggerFactory.getLogger(TestLogback.class);    public void test1(){
        MDC.put("deviceId", "deviceId3");        logger.debug("deviceId3 connected");        MDC.put("deviceId", "deviceId4");        logger.error("deviceId4   ---connected");        MDC.put("deviceId", "deviceId5");        logger.info("deviceId5   ---connected");    }public void test2(){
        MDC.put("deviceId", "deviceId2");        logger.trace("deviceId2 connected");    }public static void main(String[] args) {final TestLogback testLogback = new TestLogback();        testLogback.test1();        testLogback.test2();    }
}

5.效果截圖

如何使用logback自定義deviceId,并根據(jù)deviceId生成各自的日志文件

如何使用logback自定義deviceId,并根據(jù)deviceId生成各自的日志文件

注意點(diǎn):用log打印日志前需要拿到該設(shè)備的唯一標(biāo)識。重點(diǎn)在于 :

MDC.put("deviceId", "deviceId3");   //根據(jù)deviceId3 生成日志文件,有則追加數(shù)據(jù),沒有則創(chuàng)建該文件。   deviceId3就是打印的唯一標(biāo)識
logger.debug("deviceId3 connected");     // MDC.put("deviceId", "deviceId3"); 為第一步,  logger.debug("deviceId3 connected"); 打印日志為第二bu

到此,關(guān)于“如何使用logback自定義deviceId,并根據(jù)deviceId生成各自的日志文件”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI