更新時(shí)間:2021-11-04 09:42:09 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1792次
有時(shí)需要檢查Apache JMeter 的日志。通常,當(dāng)您使用腳本或 JMeter 本身調(diào)試問(wèn)題時(shí)會(huì)發(fā)生這種情況。如果配置正確,日志可以包含許多有用的信息。在這篇文中,我們將學(xué)習(xí)在JMeter 中配置日志記錄,即定義應(yīng)在日志中顯示哪些事件。
從JMeter 版本 3.2 開始,日志記錄是通過(guò) Apache Log4j 2 配置文件配置的。配置文件 (log4j2.xml) 位于 JMeter 的 bin 目錄中。在以前的版本中,可以通過(guò) jmeter.properties 文件進(jìn)行配置。
如果您檢查 JMeter 3.2 的 jmeter.properties 文件,您將找到 Logger Panel 的配置。Logger Panel 是一個(gè)面板,當(dāng) JMeter 打開時(shí),您可以在其中實(shí)時(shí)查看日志。
使用 JMeter 頂部面板上的警告圖標(biāo)來(lái)切換記錄器面板。
以下是 jmeter.properties 文件中記錄器面板的配置:
#jmeter.loggerpanel.display=true/false
每次啟動(dòng) JMeter 時(shí),此選項(xiàng)負(fù)責(zé)打開/關(guān)閉記錄器面板。
#jmeter.loggerpanel.enable_when_closed=true/false
如果 Logger Panel 關(guān)閉,此選項(xiàng)負(fù)責(zé)接收/忽略日志事件。
#jmeter.loggerpanel.maxlength=1000
此選項(xiàng)確定記錄器面板中保留的最大行數(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>
配置文件包含兩個(gè)主要部分:Appenders 和 Loggers。
Appenders 部分負(fù)責(zé)日志中消息的格式。它指定日志消息的模式。模式是日志中每條消息的結(jié)構(gòu)。
默認(rèn)模式如下所示: <模式>% d % p % c { 1 .}: % m % n</ pattern >
所述 %d 裝置日志消息從特定的日期和時(shí)間開始。
例如: 2017 - 12 - 06 17 : 34 : 22 , 558 INFO o 。一個(gè)。? 。小號(hào)。SampleResult :sampleresult 。使用納米時(shí)間=真
因此,如果我們 從模式中刪除 % d: < pattern >% p % c { 1 .}: % m % n < pattern >,消息將如下所示: INFO o 。一個(gè)。? 。小號(hào)。SampleResult :sampleresult 。使用納米時(shí)間=真
如果您想要其他模式,請(qǐng)更改它。
Loggers 部分負(fù)責(zé)記錄日志的內(nèi)容。有許多選項(xiàng)可用于更改日志中顯示的事件,這些選項(xiàng)在各種情況下都很有用。讓我們考慮如何更改配置及其在一些實(shí)際示例中的工作方式。
我們需要一個(gè)簡(jiǎn)短的 JMeter 腳本來(lái)演示如何更改我們的日志記錄配置。我們將使用 BlazeDemo 網(wǎng)站來(lái)創(chuàng)建我們的腳本并運(yùn)行測(cè)試。該網(wǎng)站可供任何想要進(jìn)行負(fù)載測(cè)試的人使用。
讓我們創(chuàng)建腳本!
1. 在測(cè)試計(jì)劃中添加一個(gè)線程組。
測(cè)試計(jì)劃 -> 添加 -> 線程(用戶) -> 線程組
2. 在線程組中添加一個(gè) HTTP Cookie 管理器。
線程組 -> 添加 -> 配置元素 -> HTTP Cookie 管理器
將以下行添加到 User-Defined Cookies 區(qū)域:
名稱:演示
值:BLAZEMETER
域名:blazedemo.com
需要此配置元素來(lái)演示 HTTP 控件的日志記錄配置可能性。
3. 添加一個(gè) HTTP 請(qǐng)求以打開測(cè)試 Web 應(yīng)用程序的登錄頁(yè)面。
線程組 -> 添加 -> 采樣器 -> HTTP 請(qǐng)求
設(shè)置以下值:
服務(wù)器名稱或IP:blazedemo.com
需要此采樣器來(lái)演示 HTTP 請(qǐng)求的日志記錄配置可能性。
4. 運(yùn)行腳本并查看日志。
該日志包含有關(guān)我們測(cè)試運(yùn)行的基本信息。沒(méi)有關(guān)于 cookie 或 HTTP 請(qǐng)求內(nèi)容的信息。
5. 取消對(duì) log4j2.xml 文件中下一行代碼的注釋:
<Logger name="org.apache.jmeter.protocol.http.control" level="debug" />
你可以用你最喜歡的文本編輯器來(lái)做到這一點(diǎn)。不要忘記重新啟動(dòng) JMeter 以應(yīng)用 log4j2.xml 文件中的更改。
這一類(有機(jī)。阿帕奇。JMeter的。協(xié)議。HTTP 。控制)負(fù)責(zé)連接到CookieManager,CacheManager中,AuthManager等記錄事件。
6. 重新啟動(dòng) JMeter 并再次運(yùn)行腳本。
日志現(xiàn)在包含有關(guān)來(lái)自 HTTP Cookie 管理器配置元素的事件的信息。如果您需要調(diào)試 cookie 問(wèn)題,這很有價(jià)值。例如,如果我們的腳本在傳遞 cookie 時(shí)遇到問(wèn)題,我們可以將有關(guān) cookie 的信息添加到日志中,這可以幫助我們定位問(wèn)題。
7. 取消對(duì) log4j2.xml 文件中另一行代碼的注釋:
<Logger name="org.apache.http" level="debug" />
這一類(有機(jī)。阿帕奇。JMeter的。協(xié)議。HTTP 。控制)將使全線材和上下文記錄。
Wire logging 是在執(zhí)行 HTTP 請(qǐng)求時(shí)記錄服務(wù)器和 JMeter 之間傳輸?shù)乃袛?shù)據(jù)。僅將其用于調(diào)試問(wèn)題,因?yàn)榇鎯?chǔ)所有請(qǐng)求和響應(yīng)數(shù)據(jù)可能會(huì)占用大量磁盤空間。
上下文日志是在執(zhí)行 HTTP 請(qǐng)求時(shí)記錄有關(guān) HttpClient 內(nèi)部操作的信息。
8. 重新啟動(dòng) JMeter 并再次運(yùn)行腳本。
正如我們所看到的,日志包含有關(guān) HTTP 請(qǐng)求的高級(jí)信息。
更改特定類別或根記錄器的日志級(jí)別的另一種方法是使用命令行以特定標(biāo)志啟動(dòng) JMeter。
首先,還原 log4j2.xml 文件中的所有更改,以便我們可以嘗試通過(guò)命令行更改配置。
9. 重新啟動(dòng) JMeter 并再次運(yùn)行腳本。在這些操作之后,您的日志應(yīng)該再次干凈。
可以使用以下選項(xiàng)覆蓋特定類別的日志記錄設(shè)置:
-L[category]=[priority]
例子:
jmeter -Lorg.apache.jmeter.protocol.http.control=DEBUG
jmeter -Lorg.apache.http=DEBUG
jmeter -LDEBUG
10. 啟用 HTTP 控制日志記錄。為此,請(qǐng)通過(guò)以下命令啟動(dòng) JMeter:
jmeter -Lorg.apache.jmeter.protocol.http.control=DEBUG
11. 運(yùn)行腳本并再次檢查日志。
日志包含有關(guān)來(lái)自 HTTP Cookie 管理器配置元素的事件的信息,與上面的步驟 6 相同。
12. 可以使用以下命令啟用全線和上下文日志記錄:
jmeter -Lorg.apache.http=DEBUG
13. 再運(yùn)行一次腳本。
日志包含完整的線路和上下文信息,如本文章的第 8 步中所述。
14. 可以使用 -L 標(biāo)志更改根記錄器配置,但無(wú)需類別名稱。使用以下命令啟動(dòng) JMeter 并按照前面的步驟檢查日志。
jmeter - LDBUG
第三種改變?nèi)罩炯?jí)別的方法是使用JMeter的Log Level菜單。
最新版本的 JMeter 比以前的版本有更多的日志級(jí)別選項(xiàng)。在這些選項(xiàng)之間切換將更改 JMeter 日志中的詳細(xì)信息:
錯(cuò)誤- 包括有關(guān)來(lái)自 JMeter 和腳本運(yùn)行期間的錯(cuò)誤事件的信息。錯(cuò)誤日志消息示例:2017-12-07 16:57:01,895 錯(cuò)誤 eljwPingPongSampler: Sampler 'WebSocket Ping/Pong': 沒(méi)有可重用的連接
WARN - 包括有關(guān)從 JMeter 和腳本運(yùn)行期間要警告的事件的信息。還包括來(lái)自 ERROR 日志級(jí)別的消息。WARN 日志消息示例:2017-12-07 16:58:56,825 WARN oajgaLogLevelCommand:設(shè)置根日志級(jí)別:INFO
信息- 包括有關(guān)來(lái)自 JMeter 和腳本運(yùn)行期間的事件的信息。還包括來(lái)自 WARN 和 ERROR 日志級(jí)別的消息。INFO 日志消息示例:2017-12-07 17:39:10,332 INFO oajtThreadGroup: Started thread group number 1
DEBUG - 包括有關(guān)從 JMeter 和腳本運(yùn)行期間調(diào)試事件的信息。還包括來(lái)自 INFO、WARN 和 ERROR 日志級(jí)別的消息。DEBUG 日志消息示例:2017-12-07 17:40:41,861 DEBUG oajphsHTTPHC4Impl: Thread Finished
TRACE - 包括有關(guān)從 JMeter 和腳本運(yùn)行期間跟蹤事件的信息。還包括來(lái)自 DEBUG、INFO、WARN 和 ERROR 日志級(jí)別的消息。
15. 通過(guò)菜單將日志級(jí)別更改為 DEBUG:
選項(xiàng) -> 日志級(jí)別 -> 調(diào)試
一條提到設(shè)置日志根級(jí)別的行將被添加到日志中。
2017-11-22 16:39:15,894 WARN o.a.j.g.a.LogLevelCommand: Setting root log level: DEBUG
16. 運(yùn)行腳本并查看日志。
日志應(yīng)該類似于上面的步驟 14。
以上就是在 JMeter 中配置日志記錄的各種方法,大家若想了解更多相關(guān)知識(shí),不妨來(lái)關(guān)注一下動(dòng)力節(jié)點(diǎn)的JMeter教程,里面有更多知識(shí)在等著大家去學(xué)習(xí),希望對(duì)大家能夠有所幫助。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743