1. Introduction
Pourquoi frère Hong veut expliquer le fichier de configuration de Jmeter ? C'est parce que certains enfants ou amis ont rencontré des problèmes qui nécessitent de modifier le fichier de configuration pendant le test. Ils ne sont pas très clairs ou ne le comprennent pas. Même s'ils sont modifiés, cela reste vague. De plus, certaines personnes pensent qu'il s'agit d'un lieu sacré et ne peut être violé à la légère. Ils n'osent pas le toucher et ne le modifient pas. Ils craignent que s'ils le modifient mal, Jmeter ne puisse pas fonctionner. Après avoir écouté la modification audacieuse de Brother Hong, vous n'aurez pas besoin de réinstaller un nouveau Jmeter. Ou si vous avez l'habitude de faire des sauvegardes, apportez des modifications audacieuses après la sauvegarde avant la modification. Si vous faites une erreur, vous pouvez simplement utiliser la sauvegarde fichier pour le restaurer.
2. Fichier de configuration
Entrez : propriétés dans la zone de recherche sous le répertoire %JMETER_HOME%\bin (ou $JMETER_HOME/bin) et vous constaterez qu'il existe plusieurs fichiers de configuration, comme le montre la figure suivante :
Si vous souhaitez apprendre les tests automatisés, je vous recommande une série de vidéos. Cette vidéo peut être considérée comme le didacticiel de tests automatisés numéro un sur l'ensemble du réseau joué par Bilibili. Le nombre de personnes en ligne en même temps a atteint 1 000 , et il existe également des notes qui peuvent être collectées et communiquées par différents canaux.Maître de communication technique : 798478386
Dans l'article précédent, le plus important est reportgenerator.properties , qui est le fichier d'élément de configuration principal de Jmeter. Il a été expliqué et expliqué. Ce qui suit est un résumé et une description des paramètres de certains autres fichiers de configuration couramment utilisés. Il est prévu que frère Hong expliquera le fichier aujourd'hui.log4j2.xml.
3.log4j2.xml
Ce fichier n'est pas très volumineux et son contenu a été grossièrement annoté. En fait, les développeurs devraient être très familiers avec ce fichier. Jetons un coup d'œil aux éléments de configuration qu'il contient.
<?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>
4. Description du nœud du fichier de configuration
4.1 Configuration du nœud racine
Configuration du nœud racine : il existe deux nœuds enfants : Appenders et Loggers.
status : utilisé pour spécifier le niveau des logs imprimés par log4j lui-même.
monitorinterval : utilisé pour spécifier l'intervalle de surveillance pour la reconfiguration automatique de log4j, l'unité est en secondes (s), l'intervalle minimum est de 5 s.
4.2Nœud Appenders
La configuration de l'appender utilise le nom d'un plug-in d'appender spécifique ou d'un élément d'appender dont la valeur de l'attribut type est le nom du plug-in d'appender. De plus, chaque appender doit avoir un attribut name qui spécifie une valeur unique au sein de la collection appender. L'enregistreur utilisera ce nom pour faire référence à l'appender, qui possède trois sous-nœuds communs : Console, RollingFile et File.
4.2.1Console
Console : utilisé pour définir la sortie Appender vers la console.
name : Spécifiez le nom de l’Appender.
cible : SYSTEM_OUT ou SYSTEM_ERR, généralement seule la valeur par défaut : SYSTEM_OUT est définie.
PatternLayout : format de sortie, s'il n'est pas défini, la valeur par défaut est %m%n.
4.2.2Fichier
Fichier : Appender utilisé pour définir la sortie du fichier vers l’emplacement spécifié.
name : Spécifiez le nom de l’Appender.
fileName : Spécifie le nom du fichier avec le chemin complet du fichier de destination pour le journal de sortie.
PatternLayout : format de sortie, s'il n'est pas défini, la valeur par défaut est %m%n.
4.2.3Fichier roulant
RollingFile : définissez la méthode spécifiée pour déclencher un nouvel Appender.
name : nom de l'appendeur.
fileName : le nom du fichier journal de sortie (avec le chemin complet).
filePattern : modèle de nom de fichier des fichiers journaux d'archive.
PatternLayout : format de sortie, s'il n'est pas défini, la valeur par défaut est : %m%n.
Stratégies : spécifiez la stratégie pour les journaux glissants.
TimeBasedTriggeringPolicy : sous-nœud de stratégies, stratégie glissante basée sur le temps. L'attribut d'intervalle indique la fréquence d'inversion en fonction de l'unité de temps la plus spécifique dans le modèle de date. La valeur par défaut est 1.
SizeBasedTriggeringPolicy : sous-nœud de stratégies, stratégie évolutive basée sur la taille du fichier. L'attribut size est utilisé pour définir la taille de chaque fichier journal. La taille peut être spécifiée en octets avec un suffixe Ko, Mo ou Go, par exemple 20 Mo.
DefaultRolloverStrategy : utilisé pour spécifier le nombre maximum de fichiers journaux dans le même dossier, en commençant à supprimer les plus anciens et à en créer de nouveaux (via l'attribut max).
4.3Nœud Enregistreurs
LoggerConfig est configuré à l'aide de l'élément logger. L'élément logger doit spécifier un attribut de nom. Généralement, un attribut de niveau est spécifié, et un attribut d'additivité peut également être spécifié. Le niveau peut être configuré comme TRACE, DEBUG, INFO, WARN, ERROR, ALL ou OFF. Si aucun niveau n’est spécifié, la valeur par défaut est ERREUR. L’attribut addability peut se voir attribuer une valeur true ou false. Si cet attribut est omis, la valeur par défaut true sera utilisée.
LoggerConfig (y compris la racine LoggerConfig) peut configurer des propriétés qui seront ajoutées aux propriétés copiées à partir de ThreadContextMap. Ces propriétés peuvent être référencées à partir des appenders, des filtres, des mises en page, etc. comme si elles faisaient partie de la carte ThreadContext. Les propriétés peuvent contenir des variables qui seront résolues lors de l'analyse de la configuration ou résolues dynamiquement à mesure que chaque événement est enregistré. Pour plus d’informations sur l’utilisation des variables, consultez Substitution de propriété.
LoggerConfig peut également configurer un ou plusieurs éléments AppenderRef. Chaque appender référencé sera associé au LoggerConfig spécifié. Si plusieurs appenders sont configurés sur LoggerConfig, chacun d'eux sera appelé lors du traitement des événements de journalisation.
Chaque configuration globale de Log4j doit avoir un enregistreur racine. Si un LoggerConfig racine par défaut n'est pas configuré, le niveau d'utilisation par défaut est ERROR et un LoggerConfig racine connecté à un appender de console. La principale différence entre l'enregistreur racine et les autres enregistreurs est que
l'enregistreur racine n'a pas d'attribut de nom.
Le consignateur racine ne prend pas en charge les propriétés d'additivité car il n'a pas de parent.
Il existe deux nœuds communs : Root et Logger.
4.3.1Racine
Racine : Spécifiez le journal racine du projet. Si le Logger n'est pas spécifié séparément, la sortie du journal racine sera utilisée par défaut.
level : Le niveau de sortie du journal, il y a 8 niveaux au total, de bas à haut, All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
AppenderRef : nœud enfant de Root, utilisé pour spécifier vers quel Appender le journal est généré.
4.3.2Journaux
Logger : utilisé pour spécifier le format du journal individuellement.
level : niveau de sortie du journal, cohérent avec Root.
nom : utilisé pour spécifier la classe à laquelle le Logger est applicable ou le chemin complet du package où se trouve la classe, hérité du nœud racine.
AppenderRef : nœud enfant de Logger, utilisé pour spécifier vers quel Appender le journal est généré. S'il n'est pas spécifié, il sera hérité de Root par défaut. S'il est spécifié, il sera généré à la fois dans l'Appender spécifié et dans l'Appender de Root. À cette fois, nous pouvons définir l'additivity="false" du Logger pour qu'il ne sorte que dans l'Appender personnalisé.
5. Résumé
5.1 Paramétrage du niveau de journalisation
À partir de JMeter3.2, le niveau de journalisation n'est plus défini dans jmeter.properties, mais via Apache log4j2.xml.
Remarque : Le programme imprimera les journaux supérieurs ou égaux au niveau défini. Plus le niveau de journalisation est élevé, moins les journaux seront imprimés.
Définissez le niveau de journalisation dans le fichier de configuration 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 用于关闭所有日志记录
Jetez un œil au contenu du fichier 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
Copiez une partie. Comme vous pouvez le voir ci-dessus, le niveau de contenu est : INFO.
5.2Modes de conversion fournis par Log4j
%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多客户多线程的应用中
%% 输出一个"%"字符