zoukankan      html  css  js  c++  java
  • 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 3+djanjo 2.0.7简单学习(三)--Django 管理页面
    python 3+djanjo 2.0.7简单学习(二)--创建数据库和模型
    lucene3.6.0 经典案例 入门教程
    Android——自定义Actionbar左侧覆盖不全的解决方案
    Android——ViewPager多页面滑动切换以及动画效果
    Android——LayoutInflater详解
    java.sql.SQLException:指定了无效的 Oracle URL
    核函数方法简介
    IEEE论文格式要求
    oracle使用DataBase Configuration Assistant创建、删除数据库
  • 原文地址:https://www.cnblogs.com/boqinyaxin/p/13427504.html
Copyright © 2011-2022 走看看