爲何宏哥要對Jmeter的配置文件進行一下講解了,由於有的童鞋或者小夥伴在測試中遇到一些須要修改配置文件的問題不是很清楚也不是很懂,就算修改了也是模模糊糊的。更有甚者以爲那是禁地神聖不可輕犯不敢觸碰不敢修改,懼怕修改錯了Jmeter運行不了了。聽宏哥的大膽修改大不了再從新安裝一個新的Jmeter,或者你有作備份的好習慣,在修改前備份好之後大膽修改,修改錯了直接使用備份文件恢復過來就能夠。html
在%JMETER_HOME%\bin(or $JMETER_HOME/bin)目錄下搜索框中輸入:properties 會發現存在多個配置文件,以下圖所示:java
宏哥上一篇中對其中最重要的是reportgenerator.properties是Jmeter核心配置項文件,進行了講解和說明,下面對其它經常使用的一些配置文件的設置進行總結與說明.按計劃今天宏哥將要講解文件log4j2.xml。express
這個文件不是很大,宏哥將其內容大體所有進行註釋了一下,其實開發應該對這個文件再熟悉不過了,咱們下邊看看其中到底含有那些配置項。apache
<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- Configuration後面的status,這個用於設置log4j2自身內部的信息輸出,能夠不設置,當設置成trace時, 你會看到log4j2內部各類詳細輸出。能夠設置成OFF(關閉)、WARN(輸出告警信息)或Error(只輸出錯誤信息)。 級別能夠配置爲TRACE,DEBUG,INFO,WARN,ERROR,ALL或OFF之一。若是沒有指定級別,則默認爲ERROR。 能夠爲addability屬性賦值true或false。若是該屬性被省略,則將使用默認值true。 --> <!--日誌級別以及優先級排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <Configuration status="WARN" packages="org.apache.jmeter.gui.logging"> <Appenders> <!--日誌輸出到jmeter.log文件中--> <File name="jmeter-log" fileName="${sys:jmeter.logfile:-jmeter.log}" append="false"> <PatternLayout> <pattern>%d %p %c{1.}: %m%n</pattern> </PatternLayout> </File> <!--日誌輸出到GUI界面中--> <GuiLogEvent name="gui-log-event"> <PatternLayout> <pattern>%d %p %c{1.}: %m%n</pattern> </PatternLayout> </GuiLogEvent> </Appenders> <!-- 全局配置,默認全部的Logger都繼承此配置 --> <Loggers> <!-- jmeter.log文件和GUI界面日誌輸出級別:info--> <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>
根節點Configuration:有 Appenders 和 Loggers 兩個子節點。
status:用來指定 log4j 自己打印日誌的級別。
monitorinterval:用於指定 log4j 自動從新配置的監測間隔時間,單位是秒(s),最小的間隔時間是5s。json
appender配置使用 特定的appender插件的名稱 或 類型屬性值爲appender插件的名稱的appender元素。另外,每一個appender必須有一個名字屬性,指定一個在appender集合中惟一的值。logger將使用該名稱來引用appender,有常見的 Console、RollingFile、File 三種子節點。多線程
Console:用於定義輸出到控制檯的 Appender。
name:指定 Appender 的名字。
target:SYSTEM_OUT 或 SYSTEM_ERR,通常只設置默認:SYSTEM_OUT。
PatternLayout:輸出格式,不設置默認爲 %m%n。app
File:用於定義輸出到指定位置的文件的 Appender。
name:指定 Appender 的名字。
fileName:指定輸出日誌的目的文件帶全路徑的文件名。
PatternLayout:輸出格式,不設置默認爲 %m%n。less
RollingFile:定義指定方式觸發新的 Appender。
name:Appender 名字。
fileName:輸出日誌文件的名字(帶全路徑)。
filePattern:歸檔日誌文件的文件名模式。
PatternLayout:輸出格式,不設置默認爲:%m%n。
Policies:指定滾動日誌的策略。
TimeBasedTriggeringPolicy:Policies 子節點,基於時間的滾動策略。interval 屬性根據日期模式中最具體的時間單位進行翻轉的頻率,默認爲1。
SizeBasedTriggeringPolicy:Policies 子節點,基於文件大小的滾動策略。size屬性用來定義每一個日誌文件的大小。大小能夠以字節爲單位指定,後綴爲KB,MB或GB,例如20MB。
DefaultRolloverStrategy:用來指定同一文件夾最多有幾個日誌文件時開始刪除最舊的,建立新的(經過max屬性)。測試
LoggerConfig是使用logger元素配置的。該logger元素必須指定name屬性,一般狀況下會指定一個level的屬性,也能夠指定一個additivity屬性。級別能夠配置爲TRACE,DEBUG,INFO,WARN,ERROR,ALL或OFF之一。若是沒有指定級別,則默認爲ERROR。能夠爲addability屬性賦值true或false。若是該屬性被省略,則將使用默認值true。
LoggerConfig(包括根LoggerConfig)能夠配置屬性,這些屬性將被添加到從ThreadContextMap複製的屬性中。這些屬性能夠從Appenders,Filters,Layouts等引用,就像它們是ThreadContext Map的一部分同樣。 屬性能夠包含將在解析配置時解析的變量,或者在記錄每一個事件時動態解析的變量。 有關使用變量的更多信息,請參閱Property Substitution。
LoggerConfig也能夠配置一個或多個AppenderRef元素。 每一個引用的appender都將與指定的LoggerConfig關聯。若是在LoggerConfig上配置了多個appender,則在處理日誌記錄事件時會調用它們中的每個。
每一個Log4j總體配置都必須有根記錄器(root logger)。 若是沒有配置默認根LoggerConfig,默認使用級別爲ERROR而且鏈接了一個控制檯appender的根LoggerConfig。根記錄器和其餘記錄器之間的主要區別是
根記錄器沒有名稱屬性。
根記錄器不支持可加性屬性,由於它沒有父級。ui
常見的有 Root 和 Logger 兩種節點。
Root:指定項目的根日誌,若是沒有單獨指定 Logger,那麼默認使用該 Root 日誌輸出。
level:日誌的輸出級別,共8個級別,按照從低到高爲 All < Trace < Debug < Info < Warn < Error < Fatal < OFF。
AppenderRef:Root 的子節點,用來指定該日誌輸出到哪一個 Appender。
Logger:用來單獨指定日誌的形式。
level:日誌的輸出級別,與 Root 一致。
name:用來指定該Logger所適用的類或者類所在的包全路徑,繼承自Root節點。
AppenderRef:Logger的子節點,用來指定該日誌輸出到哪一個Appender,若是沒有指定,就會默認繼承自Root.若是指定了,那麼會在指定的這個Appender和Root的Appender中都會輸出,此時咱們能夠設置Logger的additivity="false"只在自定義的Appender中進行輸出。
從JMeter3.2開始,日誌級別再也不在jmeter.properties中設置,而是經過apache log4j2.xml.
注意:程序會打印高於或等於所設置級別的日誌,設置的日誌等級越高,打印出來的日誌就越少。
配置文件log4j2.xml中設置日誌級別:
level="info"> ref="jmeter-log" /> ref="gui-log-event" /> #將level的值改成對應的日誌級別,默認爲info,也能夠在GUI界面臨時設置日誌級別 log4j2定義了8個級別的日誌,優先級從高到低依次爲: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL ALL 用於打開全部日誌記錄 TRACE 追蹤日誌 DEBUG 指出細粒度信息事件對調試應用程序是很是有幫助的 INFO 消息在粗粒度級別上突出強調應用程序的運行過程 WARN 代表會出現潛在錯誤的情形 ERROR 指出雖然發生錯誤事件,但仍然不影響系統的繼續運行 FATAL 指出每一個嚴重的錯誤事件將會致使應用程序的退出 OFF 用於關閉全部日誌記錄
和宏哥在看一下jmeter.log文件內容:
2021-01-19 10:42:47,378 INFO o.a.j.r.d.JsonExporter: Writing statistics JSON to C:\Users\DELL\Desktop\HttpReports\statistics.json 2021-01-19 10:42:47,880 INFO o.a.j.r.d.ReportGenerator: Exporting data using exporter:'html' of className:'org.apache.jmeter.report.dashboard.HtmlTemplateExporter' 2021-01-19 10:42:47,882 INFO o.a.j.r.d.HtmlTemplateExporter: Will generate dashboard in folder: C:\Users\DELL\Desktop\HttpReports 2021-01-19 10:42:47,977 INFO o.a.j.r.d.HtmlTemplateExporter: Report will be generated in: C:\Users\DELL\Desktop\HttpReports, creating folder structure 2021-01-19 10:42:47,988 INFO o.a.j.r.d.TemplateVisitor: Copying folder from 'D:\software\apache-jmeter-5.1.1\bin\report-template' to 'C:\Users\DELL\Desktop\HttpReports', got message:[C:\Users\DELL\Desktop\HttpReports\html.csv, C:\Users\DELL\Desktop\HttpReports\statistics.json], found non empty folder with following content {}, will be ignored 2021-01-19 10:42:49,607 INFO o.a.j.JMeter: Dashboard generated
宏哥複製一部分,從上邊能夠看出內容的級別是:INFO。
%m 輸出代碼中指定的消息 %p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL %r 輸出自應用啓動到輸出該log信息耗費的毫秒數 %c 輸出所屬的類目,一般就是所在類的全名 %t 輸出產生該日誌事件的線程名 %n 輸出一個回車換行符,Windows平臺爲「\r\n」,Unix平臺爲「\n」 %d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式 如:%d{dd MMM yyyy HH:mm:ss,SSS},輸出相似:02 Nov 2012 14:34:02,781 %l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數 如:Testlog.main(TestLog.java:10) %F 輸出日誌消息產生時所在的文件名稱 %L 輸出代碼中的行號 %x 輸出和當前線程相關聯的NDC(嵌套診斷環境),像java servlets多客戶多線程的應用中 %% 輸出一個"%"字符
因爲system.properties、saveservice.properties和upgrade.properties文件在平常使用中不是不少,或者基本就用不到因此宏哥在這裏就不作贅述了,到此jmeter的配置文件講解和分享到這裏就所有結束了。
您的確定就是我進步的動力。若是你感受還不錯,就請鼓勵一下吧!記得隨手點波 推薦 不要忘記哦!!!
別忘了點 推薦 留下您來過的痕跡