更新時間:2021-11-04 09:42:09 來源:動力節點 瀏覽1818次
有時需要檢查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天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習