首页 > 解决方案 > jmeter-maven-plugin 使用 logback.xml 将日志加载到 Elastic 绕过 Logstash 配置

问题描述

我有一个用例,我需要在没有日志存储配置的情况下将 Jmeter 日志加载到弹性搜索。

使用 pom.xml jmeter-maven-plugin 目标调用性能测试用例。

我希望将以下消息发送到 Elastic,

[INFO] summary =    180 in 00:00:01 =  182.6/s Avg:     0 Min:     0 Max:     0 Err:   180 (100.00%)

我尝试了文档中提到的以下内容,而不是使用 logback.xml 而不是 log4j2xml。

链接

高级日志配置 如果您将“log4j2.xml”添加到(默认为 ${project.base.directory}/src/test/conf)中,它将被复制到 /bin 文件夹中。如果一个不存在,则将使用 JMeter 提供的默认一个。

我还尝试将配置文件提供为

 mvn -X -DAPPCONFIG=home/App1 -Dlogback.configurationFile=file:path/to/conf/logback.xml -Duser.timezone=GMT com.lazerycode.jmeter:jmeter-maven-plugin:jmeter -Dtest=TestClass#testmethod

在这两种情况下,logback.xml 都没有被使用。但我注意到在 git 中 pom.xml 包含 logback 依赖项。

任何输入,如何在 jmeter-maven-plugin 中配置 logback.xml 而不是 log4j2.xml?

标签: mavenjmeterlogbackslf4jjmeter-maven-plugin

解决方案


查看将 Java 应用程序的日志发送到 Elastic Stack,您似乎需要:

  1. 通过将下一行添加到pom.xml文件来添加logstash-logback-encoderJMeter Classpath :

    <testPlanLibraries>
         <artifact>net.logstash.logback:logstash-logback-encoder:6.2</artifact>
    </testPlanLibraries>
    
  2. 将log4j2.xml文件的副本放置到src/test/confMaven 项目的文件夹中,并根据您的要求配置 JMeter 日志记录。确保将 Logstash appender 添加到其中,例如:

    <appender name="STASH" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/desired/location/of/the/log/file</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/desired/location/of/the/log/file.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
    </appender>
    <root level="DEBUG">
        <appender-ref ref="STASH"/>
    </root>
    
  3. 应该是这样,您不能指向logback.xml读取配置的文件,将输出转换为 JSON 并将数据提供给 ELK 堆栈


推荐阅读