• logback分线程输出源,生成文档(每个测试用例生成单独日志)


    最近写并发测试,所有执行的用例日志都打印在了一起,觉得很难排查问题,所有学习做了一个分线程输出日志的功能。这是我配置的xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <property name="log.base" value="/testNglogs" />
    <!-- 分线程输出源 使用滚动生成文档-->
    <!-- 使用 MDC 的 appender -->
    <appender name="FILE_CUSTOM" class="ch.qos.logback.classic.sift.SiftingAppender">
    <!-- discriminator 的默认实现类 ch.qos.logback.classic.sift.MDCBasedDiscriminator -->
    <discriminator>
    <key>logName</key>
    <defaultValue>MyFile</defaultValue>
    </discriminator>
    <sift>
    <!-- 标准的文件输出 Appender, 文件名根据 MDC 动态生成 -->
    <appender name="FILE-${logName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>D:/test2/${logName}.log</file>
    <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!--日志输出位置 可相对、和绝对路径 -->
    <fileNamePattern>D:/test2/%d{yyyy-MM-dd}/${logName}.log</fileNamePattern>
    </rollingPolicy>
    <encoder charset="UTF-8">
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
    </encoder>
    </appender>
    </sift>
    </appender>

    <!-- 分线程输出源 不使用滚动生成文档-->
    <!-- 使用 MDC 的 appender -->
    <appender name="FILE_CUSTOM3" class="ch.qos.logback.classic.sift.SiftingAppender">
    <!-- discriminator 的默认实现类 ch.qos.logback.classic.sift.MDCBasedDiscriminator -->
    <discriminator>
    <key>logName</key>
    <defaultValue>MyFile</defaultValue>
    </discriminator>
    <sift>
    <!-- 标准的文件输出 Appender, 文件名根据 MDC 动态生成 -->
    <appender name="FILE-${logName}" class="ch.qos.logback.core.FileAppender">
    <file>${log.base}/${logName}.html</file>
    <append>false</append><!-- true表示追加记录,false表示清空后重新记录 -->
    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
    <!--<layout class="ch.qos.logback.classic.html.HTMLLayout">
    </layout>-->
    <!-- 自定义的org.autoAppUI.MyHTMLLayout-->
    <layout class="org.logUtils.MyHTMLLayout">
    <pattern>%d{yyyy-MM-dd/HH:mm:ss.SSS}%logger%t%M%line%p%m</pattern>
    </layout>
    </encoder>
    </appender>
    </sift>
    </appender>
    <root level="INFO">
    <appender-ref ref="FILE"/>
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE_CUSTOM"/>
    <appender-ref ref="FILE_CUSTOM3"/>
    </root>
    <!--配置我不想打印的类的日志 -->
    <logger name="me.chyxion.jdbc.NewbieJdbcSupport" level="Error" additivity="false">
    <appender-ref ref="FILE"/>
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE_CUSTOM"/>
    <appender-ref ref="FILE_CUSTOM3"/>
    </logger>
    <logger name="com.alibaba.druid.pool.DruidDataSource" level="Error" additivity="false">
    <appender-ref ref="FILE"/>
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE_CUSTOM"/>
    <appender-ref ref="FILE_CUSTOM3"/>
    </logger>
    </configuration>

    配置完成后,在我的测试类里加上这一句就可以直接用了(我的这个测试类是并发执行的,所有每次的线程不一样)

    你再不自己敲代码,你的四肢就退化了
  • 相关阅读:
    初识python
    如何通过发新浪微博关闭电脑
    如何给word 文章的每段段尾添加 脚注
    三种可视化格式模型:普通文档流、相对定位与绝对定位、浮动
    Python基础知识:函数
    比较两个数的大小,自定义比较两个整数的大小的方法
    编程输出九九乘法表
    [2012-06-21]结合find的awk
    [2012-05-31]awk去重复项
    [2012-05-31]awk记录分割符RS
  • 原文地址:https://www.cnblogs.com/boqinyaxin/p/13427504.html
Copyright © 2020-2023  润新知