首页 > 解决方案 > 将 jmeter.log 也发送到控制台标准输出

问题描述

当 JMeter 以非 gui 模式启动时,它会在控制台上显示一些日志,如下所示

342-MC-C02Y33GKJG5H:bin asankav$ ./jmeter -n -t /Users/asankav/myarea/jmetertest/Demo.jmx

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/asankav/software/apache-jmeter-5.1.1/lib/log4j-slf4j-impl-2.11.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/asankav/software/apache-jmeter-5.1.1/lib/ext/qperf_core-0.0.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Creating summariser <summary>

但是实际的测试执行日志会写入一个名为 jmeter.log 的单独日志文件,它记录 log4J 级别的执行日志。

342-MC-C02Y33GKJG5H:bin asankav$ tail -f -n 500 jmeter.log
2020-06-04 11:53:58,710 INFO o.a.j.u.JMeterUtils: Setting Locale to en_EN
2020-06-04 11:53:58,728 INFO o.a.j.JMeter: Loading user properties from: user.properties
2020-06-04 11:53:58,729 INFO o.a.j.JMeter: Loading system properties from: system.properties
2020-06-04 11:53:58,733 INFO o.a.j.JMeter: Copyright (c) 1998-2019 The Apache Software Foundation
2020-06-04 11:53:58,733 INFO o.a.j.JMeter: Version 5.1.1 r1855137
2020-06-04 11:53:58,733 INFO o.a.j.JMeter: java.version=1.8.0_221
2020-06-04 11:53:58,733 INFO o.a.j.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM
2020-06-04 11:53:58,733 INFO o.a.j.JMeter: os.name=Mac OS X
2020-06-04 11:53:58,733 INFO o.a.j.JMeter: os.arch=x86_64
2020-06-04 11:53:58,733 INFO o.a.j.JMeter: os.version=10.15.4
2020-06-04 11:53:58,733 INFO o.a.j.JMeter: file.encoding=UTF-8
2020-06-04 11:53:58,733 INFO o.a.j.JMeter: java.awt.headless=true
2020-06-04 11:53:58,733 INFO o.a.j.JMeter: Max memory     =1073741824
2020-06-04 11:53:58,733 INFO o.a.j.JMeter: Available Processors =12
2020-06-04 11:53:58,736 INFO o.a.j.JMeter: Default Locale=English (EN)
2020-06-04 11:53:58,736 INFO o.a.j.JMeter: JMeter  Locale=English (EN)

我们可以将此 jmeter.log 内容也定向到 STDOUT 控制台吗?我知道我们可以将日志通过管道传输到控制台。但是有没有办法使用 JMeter 配置来做到这一点?

我在 Kubernetes 集群上将 JMeter 作为容器运行,并希望将 jmeter.log 内容获取到控制台。因此,这些日志将在容器日志中可用,并且可以通过 Kubernetes 仪表板查看它们。

欣赏你的想法。

标签: dockerkubernetesjmeterlog4j2

解决方案


更新 bin 文件夹中的 log4j2.xml

在下面添加<Appenders>

<Console name="console" target="SYSTEM_OUT">
    <PatternLayout pattern="[%highlight{%-5level}] %d{DEFAULT} %c{1}.%M() - %msg%n%throwable{short.lineNumber}" />
</Console>

在下面添加<Root level="info">

<AppenderRef ref="console" />

所以每个日志也会被写入控制台


推荐阅读