更新時間:2021-11-04 09:42:09 來源:動力節(jié)點 瀏覽2244次
有時需要檢查Apache JMeter 的日志。通常,當(dāng)您使用腳本或 JMeter 本身調(diào)試問題時會發(fā)生這種情況。如果配置正確,日志可以包含許多有用的信息。在這篇文中,我們將學(xué)習(xí)在JMeter 中配置日志記錄,即定義應(yīng)在日志中顯示哪些事件。
從JMeter 版本 3.2 開始,日志記錄是通過 Apache Log4j 2 配置文件配置的。配置文件 (log4j2.xml) 位于 JMeter 的 bin 目錄中。在以前的版本中,可以通過 jmeter.properties 文件進(jìn)行配置。
如果您檢查 JMeter 3.2 的 jmeter.properties 文件,您將找到 Logger Panel 的配置。Logger Panel 是一個面板,當(dāng) JMeter 打開時,您可以在其中實時查看日志。
使用 JMeter 頂部面板上的警告圖標(biāo)來切換記錄器面板。

以下是 jmeter.properties 文件中記錄器面板的配置:
#jmeter.loggerpanel.display=true/false
每次啟動 JMeter 時,此選項負(fù)責(zé)打開/關(guān)閉記錄器面板。
#jmeter.loggerpanel.enable_when_closed=true/false
如果 Logger Panel 關(guān)閉,此選項負(fù)責(zé)接收/忽略日志事件。
#jmeter.loggerpanel.maxlength=1000
此選項確定記錄器面板中保留的最大行數(shù)。
現(xiàn)在,讓我們仔細(xì)看看配置文件(log4j2.xml)中的日志設(shè)置。
<?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 部分負(fù)責(zé)日志中消息的格式。它指定日志消息的模式。模式是日志中每條消息的結(jié)構(gòu)。
默認(rèn)模式如下所示: <模式>% 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 部分負(fù)責(zé)記錄日志的內(nèi)容。有許多選項可用于更改日志中顯示的事件,這些選項在各種情況下都很有用。讓我們考慮如何更改配置及其在一些實際示例中的工作方式。
我們需要一個簡短的 JMeter 腳本來演示如何更改我們的日志記錄配置。我們將使用 BlazeDemo 網(wǎng)站來創(chuàng)建我們的腳本并運行測試。該網(wǎng)站可供任何想要進(jìn)行負(fù)載測試的人使用。
讓我們創(chuàng)建腳本!
1. 在測試計劃中添加一個線程組。
測試計劃 -> 添加 -> 線程(用戶) -> 線程組
2. 在線程組中添加一個 HTTP Cookie 管理器。
線程組 -> 添加 -> 配置元素 -> HTTP Cookie 管理器

將以下行添加到 User-Defined Cookies 區(qū)域:
名稱:演示
值:BLAZEMETER
域名:blazedemo.com
需要此配置元素來演示 HTTP 控件的日志記錄配置可能性。
3. 添加一個 HTTP 請求以打開測試 Web 應(yīng)用程序的登錄頁面。
線程組 -> 添加 -> 采樣器 -> HTTP 請求

設(shè)置以下值:
服務(wù)器名稱或IP:blazedemo.com
需要此采樣器來演示 HTTP 請求的日志記錄配置可能性。
4. 運行腳本并查看日志。

該日志包含有關(guān)我們測試運行的基本信息。沒有關(guān)于 cookie 或 HTTP 請求內(nèi)容的信息。
5. 取消對 log4j2.xml 文件中下一行代碼的注釋:
<Logger name="org.apache.jmeter.protocol.http.control" level="debug" />
你可以用你最喜歡的文本編輯器來做到這一點。不要忘記重新啟動 JMeter 以應(yīng)用 log4j2.xml 文件中的更改。
這一類(有機(jī)。阿帕奇。JMeter的。協(xié)議。HTTP ??刂?負(fù)責(zé)連接到CookieManager,CacheManager中,AuthManager等記錄事件。
6. 重新啟動 JMeter 并再次運行腳本。

日志現(xiàn)在包含有關(guān)來自 HTTP Cookie 管理器配置元素的事件的信息。如果您需要調(diào)試 cookie 問題,這很有價值。例如,如果我們的腳本在傳遞 cookie 時遇到問題,我們可以將有關(guān) cookie 的信息添加到日志中,這可以幫助我們定位問題。
7. 取消對 log4j2.xml 文件中另一行代碼的注釋:
<Logger name="org.apache.http" level="debug" />
這一類(有機(jī)。阿帕奇。JMeter的。協(xié)議。HTTP ??刂?將使全線材和上下文記錄。
Wire logging 是在執(zhí)行 HTTP 請求時記錄服務(wù)器和 JMeter 之間傳輸?shù)乃袛?shù)據(jù)。僅將其用于調(diào)試問題,因為存儲所有請求和響應(yīng)數(shù)據(jù)可能會占用大量磁盤空間。
上下文日志是在執(zhí)行 HTTP 請求時記錄有關(guān) HttpClient 內(nèi)部操作的信息。
8. 重新啟動 JMeter 并再次運行腳本。

正如我們所看到的,日志包含有關(guān) HTTP 請求的高級信息。
更改特定類別或根記錄器的日志級別的另一種方法是使用命令行以特定標(biāo)志啟動 JMeter。
首先,還原 log4j2.xml 文件中的所有更改,以便我們可以嘗試通過命令行更改配置。
9. 重新啟動 JMeter 并再次運行腳本。在這些操作之后,您的日志應(yīng)該再次干凈。

可以使用以下選項覆蓋特定類別的日志記錄設(shè)置:
-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. 運行腳本并再次檢查日志。

日志包含有關(guān)來自 HTTP Cookie 管理器配置元素的事件的信息,與上面的步驟 6 相同。
12. 可以使用以下命令啟用全線和上下文日志記錄:
jmeter -Lorg.apache.http=DEBUG
13. 再運行一次腳本。

日志包含完整的線路和上下文信息,如本文章的第 8 步中所述。
14. 可以使用 -L 標(biāo)志更改根記錄器配置,但無需類別名稱。使用以下命令啟動 JMeter 并按照前面的步驟檢查日志。
jmeter - LDBUG
第三種改變?nèi)罩炯墑e的方法是使用JMeter的Log Level菜單。
最新版本的 JMeter 比以前的版本有更多的日志級別選項。在這些選項之間切換將更改 JMeter 日志中的詳細(xì)信息:
錯誤- 包括有關(guān)來自 JMeter 和腳本運行期間的錯誤事件的信息。錯誤日志消息示例:2017-12-07 16:57:01,895 錯誤 eljwPingPongSampler: Sampler 'WebSocket Ping/Pong': 沒有可重用的連接
WARN - 包括有關(guān)從 JMeter 和腳本運行期間要警告的事件的信息。還包括來自 ERROR 日志級別的消息。WARN 日志消息示例:2017-12-07 16:58:56,825 WARN oajgaLogLevelCommand:設(shè)置根日志級別:INFO
信息- 包括有關(guān)來自 JMeter 和腳本運行期間的事件的信息。還包括來自 WARN 和 ERROR 日志級別的消息。INFO 日志消息示例:2017-12-07 17:39:10,332 INFO oajtThreadGroup: Started thread group number 1
DEBUG - 包括有關(guān)從 JMeter 和腳本運行期間調(diào)試事件的信息。還包括來自 INFO、WARN 和 ERROR 日志級別的消息。DEBUG 日志消息示例:2017-12-07 17:40:41,861 DEBUG oajphsHTTPHC4Impl: Thread Finished
TRACE - 包括有關(guān)從 JMeter 和腳本運行期間跟蹤事件的信息。還包括來自 DEBUG、INFO、WARN 和 ERROR 日志級別的消息。
15. 通過菜單將日志級別更改為 DEBUG:
選項 -> 日志級別 -> 調(diào)試
一條提到設(shè)置日志根級別的行將被添加到日志中。
2017-11-22 16:39:15,894 WARN o.a.j.g.a.LogLevelCommand: Setting root log level: DEBUG
16. 運行腳本并查看日志。

日志應(yīng)該類似于上面的步驟 14。
以上就是在 JMeter 中配置日志記錄的各種方法,大家若想了解更多相關(guān)知識,不妨來關(guān)注一下動力節(jié)點的JMeter教程,里面有更多知識在等著大家去學(xué)習(xí),希望對大家能夠有所幫助。