更新时间:2021-11-04 09:42:09 来源:极悦 浏览1252次
有时需要检查Apache JMeter 的日志。通常,当您使用脚本或 JMeter 本身调试问题时会发生这种情况。如果配置正确,日志可以包含许多有用的信息。在这篇文中,我们将学习在JMeter 中配置日志记录,即定义应在日志中显示哪些事件。
从JMeter 版本 3.2 开始,日志记录是通过 Apache Log4j 2 配置文件配置的。配置文件 (log4j2.xml) 位于 JMeter 的 bin 目录中。在以前的版本中,可以通过 jmeter.properties 文件进行配置。
如果您检查 JMeter 3.2 的 jmeter.properties 文件,您将找到 Logger Panel 的配置。Logger Panel 是一个面板,当 JMeter 打开时,您可以在其中实时查看日志。
使用 JMeter 顶部面板上的警告图标来切换记录器面板。
以下是 jmeter.properties 文件中记录器面板的配置:
#jmeter.loggerpanel.display=true/false
每次启动 JMeter 时,此选项负责打开/关闭记录器面板。
#jmeter.loggerpanel.enable_when_closed=true/false
如果 Logger Panel 关闭,此选项负责接收/忽略日志事件。
#jmeter.loggerpanel.maxlength=1000
此选项确定记录器面板中保留的最大行数。
现在,让我们仔细看看配置文件(log4j2.xml)中的日志设置。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" packages="org.apache.jmeter.gui.logging">
<Appenders>
<File name="jmeter-log" fileName="${sys:jmeter.logfile:-jmeter.log}" append="false">
<PatternLayout>
<pattern>%d %p %c{1.}: %m%n</pattern>
</PatternLayout>
</File>
<GuiLogEvent name="gui-log-event">
<PatternLayout>
<pattern>%d %p %c{1.}: %m%n</pattern>
</PatternLayout>
</GuiLogEvent>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="jmeter-log" />
<AppenderRef ref="gui-log-event" />
</Root>
<Logger name="org.apache.jmeter.junit" level="debug" />
<!--
<Logger name="org.apache.jmeter.control" level="debug" />
<Logger name="org.apache.jmeter.testbeans" level="debug" />
<Logger name="org.apache.jmeter.engine" level="debug" />
<Logger name="org.apache.jmeter.threads" level="debug" />
<Logger name="org.apache.jmeter.gui" level="warn" />
<Logger name="org.apache.jmeter.testelement" level="debug" />
<Logger name="org.apache.jmeter.util" level="warn" />
<Logger name="org.apache.jmeter.protocol.http" level="debug" />
-->
<!-- # For CookieManager, AuthManager etc: -->
<!--
<Logger name="org.apache.jmeter.protocol.http.control" level="debug" />
<Logger name="org.apache.jmeter.protocol.ftp" level="warn" />
<Logger name="org.apache.jmeter.protocol.jdbc" level="debug" />
<Logger name="org.apache.jmeter.protocol.java" level="warn" />
<Logger name="org.apache.jmeter.testelements.property" level="debug" />
-->
<Logger name="org.apache.jorphan" level="info" />
<!--
# Apache HttpClient logging examples
-->
<!-- # Enable header wire + context logging - Best for Debugging -->
<!--
<Logger name="org.apache.http" level="debug" />
<Logger name="org.apache.http.wire" level="error" />
-->
<!-- # Enable full wire + context logging -->
<!-- <Logger name="org.apache.http" level="debug" /> -->
<!-- # Enable context logging for connection management -->
<!-- <Logger name="org.apache.http.impl.conn" level="debug" /> -->
<!-- # Enable context logging for connection management / request execution -->
<!--
<Logger name="org.apache.http.impl.conn" level="debug" />
<Logger name="org.apache.http.impl.client" level="debug" />
<Logger name="org.apache.http.client" level="debug" />
-->
<!--
# Reporting logging configuration examples
-->
<!-- # If you want to debug reporting, uncomment this line -->
<!-- <Logger name="org.apache.jmeter.report" level="debug" /> -->
<!--
# More user specific logging configuration examples.
-->
<!-- <Logger name="org.apache.jorphan.reflect" level="debug" /> -->
<!--
# Warning: Enabling the next debug line causes javax.net.ssl.SSLException: Received fatal alert: unexpected_message for certain sites when used with the default HTTP Sampler
-->
<!--
<Logger name="org.apache.jmeter.util.HttpSSLProtocolSocketFactory" level="debug" />
<Logger name="org.apache.jmeter.util.JsseSSLManager" level="debug" />
-->
<!--
# Enable Proxy request debug
-->
<!-- <Logger name="org.apache.jmeter.protocol.http.proxy.HttpRequestHdr" level="debug" /> -->
</Loggers>
</Configuration>
配置文件包含两个主要部分:Appenders 和 Loggers。
Appenders 部分负责日志中消息的格式。它指定日志消息的模式。模式是日志中每条消息的结构。
默认模式如下所示: <模式>% d % p % c { 1 .}: % m % n</ pattern >
所述 %d 装置日志消息从特定的日期和时间开始。
例如: 2017 - 12 - 06 17 : 34 : 22 , 558 INFO o 。一个。Ĵ 。小号。SampleResult :sampleresult 。使用纳米时间=真
因此,如果我们 从模式中删除 % d: < pattern >% p % c { 1 .}: % m % n < pattern >,消息将如下所示: INFO o 。一个。Ĵ 。小号。SampleResult :sampleresult 。使用纳米时间=真
如果您想要其他模式,请更改它。
Loggers 部分负责记录日志的内容。有许多选项可用于更改日志中显示的事件,这些选项在各种情况下都很有用。让我们考虑如何更改配置及其在一些实际示例中的工作方式。
我们需要一个简短的 JMeter 脚本来演示如何更改我们的日志记录配置。我们将使用 BlazeDemo 网站来创建我们的脚本并运行测试。该网站可供任何想要进行负载测试的人使用。
让我们创建脚本!
1. 在测试计划中添加一个线程组。
测试计划 -> 添加 -> 线程(用户) -> 线程组
2. 在线程组中添加一个 HTTP Cookie 管理器。
线程组 -> 添加 -> 配置元素 -> HTTP Cookie 管理器
将以下行添加到 User-Defined Cookies 区域:
名称:演示
值:BLAZEMETER
域名:blazedemo.com
需要此配置元素来演示 HTTP 控件的日志记录配置可能性。
3. 添加一个 HTTP 请求以打开测试 Web 应用程序的登录页面。
线程组 -> 添加 -> 采样器 -> HTTP 请求
设置以下值:
服务器名称或IP:blazedemo.com
需要此采样器来演示 HTTP 请求的日志记录配置可能性。
4. 运行脚本并查看日志。
该日志包含有关我们测试运行的基本信息。没有关于 cookie 或 HTTP 请求内容的信息。
5. 取消对 log4j2.xml 文件中下一行代码的注释:
<Logger name="org.apache.jmeter.protocol.http.control" level="debug" />
你可以用你最喜欢的文本编辑器来做到这一点。不要忘记重新启动 JMeter 以应用 log4j2.xml 文件中的更改。
这一类(有机。阿帕奇。JMeter的。协议。HTTP 。控制)负责连接到CookieManager,CacheManager中,AuthManager等记录事件。
6. 重新启动 JMeter 并再次运行脚本。
日志现在包含有关来自 HTTP Cookie 管理器配置元素的事件的信息。如果您需要调试 cookie 问题,这很有价值。例如,如果我们的脚本在传递 cookie 时遇到问题,我们可以将有关 cookie 的信息添加到日志中,这可以帮助我们定位问题。
7. 取消对 log4j2.xml 文件中另一行代码的注释:
<Logger name="org.apache.http" level="debug" />
这一类(有机。阿帕奇。JMeter的。协议。HTTP 。控制)将使全线材和上下文记录。
Wire logging 是在执行 HTTP 请求时记录服务器和 JMeter 之间传输的所有数据。仅将其用于调试问题,因为存储所有请求和响应数据可能会占用大量磁盘空间。
上下文日志是在执行 HTTP 请求时记录有关 HttpClient 内部操作的信息。
8. 重新启动 JMeter 并再次运行脚本。
正如我们所看到的,日志包含有关 HTTP 请求的高级信息。
更改特定类别或根记录器的日志级别的另一种方法是使用命令行以特定标志启动 JMeter。
首先,还原 log4j2.xml 文件中的所有更改,以便我们可以尝试通过命令行更改配置。
9. 重新启动 JMeter 并再次运行脚本。在这些操作之后,您的日志应该再次干净。
可以使用以下选项覆盖特定类别的日志记录设置:
-L[category]=[priority]
例子:
jmeter -Lorg.apache.jmeter.protocol.http.control=DEBUG
jmeter -Lorg.apache.http=DEBUG
jmeter -LDEBUG
10. 启用 HTTP 控制日志记录。为此,请通过以下命令启动 JMeter:
jmeter -Lorg.apache.jmeter.protocol.http.control=DEBUG
11. 运行脚本并再次检查日志。
日志包含有关来自 HTTP Cookie 管理器配置元素的事件的信息,与上面的步骤 6 相同。
12. 可以使用以下命令启用全线和上下文日志记录:
jmeter -Lorg.apache.http=DEBUG
13. 再运行一次脚本。
日志包含完整的线路和上下文信息,如本文章的第 8 步中所述。
14. 可以使用 -L 标志更改根记录器配置,但无需类别名称。使用以下命令启动 JMeter 并按照前面的步骤检查日志。
jmeter - LDBUG
第三种改变日志级别的方法是使用JMeter的Log Level菜单。
最新版本的 JMeter 比以前的版本有更多的日志级别选项。在这些选项之间切换将更改 JMeter 日志中的详细信息:
错误- 包括有关来自 JMeter 和脚本运行期间的错误事件的信息。错误日志消息示例:2017-12-07 16:57:01,895 错误 eljwPingPongSampler: Sampler 'WebSocket Ping/Pong': 没有可重用的连接
WARN - 包括有关从 JMeter 和脚本运行期间要警告的事件的信息。还包括来自 ERROR 日志级别的消息。WARN 日志消息示例:2017-12-07 16:58:56,825 WARN oajgaLogLevelCommand:设置根日志级别:INFO
信息- 包括有关来自 JMeter 和脚本运行期间的事件的信息。还包括来自 WARN 和 ERROR 日志级别的消息。INFO 日志消息示例:2017-12-07 17:39:10,332 INFO oajtThreadGroup: Started thread group number 1
DEBUG - 包括有关从 JMeter 和脚本运行期间调试事件的信息。还包括来自 INFO、WARN 和 ERROR 日志级别的消息。DEBUG 日志消息示例:2017-12-07 17:40:41,861 DEBUG oajphsHTTPHC4Impl: Thread Finished
TRACE - 包括有关从 JMeter 和脚本运行期间跟踪事件的信息。还包括来自 DEBUG、INFO、WARN 和 ERROR 日志级别的消息。
15. 通过菜单将日志级别更改为 DEBUG:
选项 -> 日志级别 -> 调试
一条提到设置日志根级别的行将被添加到日志中。
2017-11-22 16:39:15,894 WARN o.a.j.g.a.LogLevelCommand: Setting root log level: DEBUG
16. 运行脚本并查看日志。
日志应该类似于上面的步骤 14。
以上就是在 JMeter 中配置日志记录的各种方法,大家若想了解更多相关知识,不妨来关注一下极悦的JMeter教程,里面有更多知识在等着大家去学习,希望对大家能够有所帮助。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习