这篇文章主要介绍“如何使用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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。