您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何使用logback自定義deviceId,并根據deviceId生成各自的日志文件”,在日常操作中,相信很多人在如何使用logback自定義deviceId,并根據deviceId生成各自的日志文件問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用logback自定義deviceId,并根據deviceId生成各自的日志文件”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
<!--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>
<?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鑒別器,設置運行時動態屬性,siftingAppender根據這個屬性來輸出日志到不同文件 --> <discriminator> <key>deviceId</key> <defaultValue>unknown</defaultValue> </discriminator> <sift> <!--具體的寫日志appender,每一個deviceId創建一個文件--> <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"> <!--定義文件滾動時的文件名的格式--><!-- <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>
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(); } }
注意點:用log打印日志前需要拿到該設備的唯一標識。重點在于 :
MDC.put("deviceId", "deviceId3"); //根據deviceId3 生成日志文件,有則追加數據,沒有則創建該文件。 deviceId3就是打印的唯一標識
logger.debug("deviceId3 connected"); // MDC.put("deviceId", "deviceId3"); 為第一步, logger.debug("deviceId3 connected"); 打印日志為第二bu
到此,關于“如何使用logback自定義deviceId,并根據deviceId生成各自的日志文件”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。