温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用logback自定义deviceId,并根据deviceId生成各自的日志文件

发布时间:2021-10-14 14:44:53 来源:亿速云 阅读:214 作者:iii 栏目:编程语言

这篇文章主要介绍“如何使用logback自定义deviceId,并根据deviceId生成各自的日志文件”,在日常操作中,相信很多人在如何使用logback自定义deviceId,并根据deviceId生成各自的日志文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用logback自定义deviceId,并根据deviceId生成各自的日志文件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.层级目录截图

如何使用logback自定义deviceId,并根据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鉴别器,设置运行时动态属性,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>

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,并根据deviceId生成各自的日志文件

如何使用logback自定义deviceId,并根据deviceId生成各自的日志文件

注意点:用log打印日志前需要拿到该设备的唯一标识。重点在于 :

MDC.put("deviceId", "deviceId3");   //根据deviceId3 生成日志文件,有则追加数据,没有则创建该文件。   deviceId3就是打印的唯一标识
logger.debug("deviceId3 connected");     // MDC.put("deviceId", "deviceId3"); 为第一步,  logger.debug("deviceId3 connected"); 打印日志为第二bu

到此,关于“如何使用logback自定义deviceId,并根据deviceId生成各自的日志文件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI