开始使用
1.4.7 日志和错误消息¶
从 3.2 开始,JMeter 日志不再通过jmeter.properties等属性文件进行配置,而是通过Apache Log4j 2配置文件(默认情况下,JMeter 启动目录中的log4j2.xml )进行配置. 此外,从 3.2 开始,包括 JMeter 和插件在内的每个代码都必须使用SLF4J库来留下日志。
这是一个示例log4j2.xml文件,它为每个类别定义了两个日志附加程序和记录器。
%d %p %c{1.}: %m%n %d %p %c{1.}: %m%n 因此,如果您想将org.apache.http类别的日志级别更改为调试级别,您可以在启动 JMeter 之前
简单地在log4j2.xml文件中添加(或取消注释)以下 logger 元素。
有关如何配置log4j2.xml文件的更多详细信息,请参阅Apache Log4j 2 配置页面。
特定类别或根记录器的日志级别也可以直接在命令行上覆盖(而不是修改log4j2.xml)。为此,请使用以下选项:
-L[类别]=[优先级]
覆盖日志记录设置,将特定类别设置为给定的优先级。从 3.2 开始,建议使用完整的类别名称(例如org.apache.jmeter或com.example.foo),但如果类别名称以jmeter或jorphan 开头,则为org.apache。
将在内部添加到类别名称输入以构造完整的类别名称(即org.apache.jmeter或org.apache.jorphan)以实现向后兼容性。
例子:
jmeter -Ljmeter.engine=DEBUG
jmeter -Lorg.apache.jmeter.engine=DEBUG
jmeter -Lcom.example.foo=DEBUG
jmeter -LDEBUG
日志记录的差异:旧实践与新实践:
由于 JMeter 从 3.2 开始使用 SLF4J 作为日志记录 API 和 Apache Log4j 2 作为日志框架,因此并非 3.2 之前使用的每个日志级别都可以与 SLF4J/Log4j2 提供的新可用日志级别之一完全匹配。因此,如果您需要迁移任何现有的日志记录配置和日志记录代码,请牢记以下差异和新的建议做法。
类别
3.2 之前的旧做法
自 3.2 以来的新做法
记录器参考
通过LoggingManager引用记录器:
LoggingManager.getLoggerFor(String category);
LoggingManager.getLoggerForClass();
将 SLF4J API 与类别或显式类一起使用:
LoggerFactory.getLogger(String category);
LoggerFactory.getLogger(Foo.class);
配置或命令行参数中的日志级别
旧日志级别:
调试
信息
警告
错误
致命错误
没有任何
通过 SLF4J/Log4j2 映射到新级别:
调试
信息
警告
错误
错误
离开
由于SLF4J API 不支持FATAL_ERROR,因此将其视为ERROR,而不是现有代码不中断。还有FATAL日志级别选项。
从 3.2 开始额外支持TRACE级别,它不如DEBUG特定。查阅 SLF4J 或 Apache Log4J 2 文档以了解详细信息。
JMeter 通常不使用弹出对话框来显示错误,因为这些会干扰运行测试。它也不会报告拼写错误的变量或函数的任何错误;相反,引用只是按原样使用。有关详细信息,请参阅函数和变量。
如果 JMeter 在测试期间检测到错误,则会将一条消息写入日志文件。日志文件名在log4j2.xml文件中定义(或使用-j选项,见下文)。它默认为jmeter.log,可以在启动 JMeter 的目录中找到。
菜单选项 → 日志查看器
在 JMeter 主窗口的底部窗格中显示日志文件。
在 GUI 模式下,日志文件中记录的错误/致命消息的数量显示在右上角。
错误/致命计数器
命令行选项-j jmeterlogfile允许在读取初始属性文件之后以及处理任何其他属性之前进行处理。因此,它允许覆盖jmeter.log的默认值。将测试计划名称作为参数的 jmeter 脚本(例如jmeter-n.cmd)已更新为使用测试计划名称定义日志文件,例如对于测试计划Test27.jmx,日志文件设置为Test27。日志。
在 Windows 上运行时,该文件可能仅显示为jmeter,除非您已将 Windows 设置为显示文件扩展名。[无论如何你都应该这样做,以便更容易检测病毒和其他伪装成文本文件的恶意软件......]
除了记录错误,jmeter.log文件还记录了一些关于测试运行的信息。例如:
2017-03-01 12:19:20,314 INFO o.a.j.JMeter: Version 3.2.20170301
2017-03-01 12:19:45,314 INFO o.a.j.g.a.Load: Loading file: c:\mytestfiles\BSH.jmx
2017-03-01 12:19:52,328 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-03-01 12:19:52,384 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group BSH. Ramp up = 1.
2017-03-01 12:19:52,485 INFO o.a.j.e.StandardJMeterEngine: Continue on error
2017-03-01 12:19:52,589 INFO o.a.j.t.JMeterThread: Thread BSH1-1 started
2017-03-01 12:19:52,590 INFO o.a.j.t.JMeterThread: Thread BSH1-1 is done
2017-03-01 12:19:52,691 INFO o.a.j.e.StandardJMeterEngine: Test has ended
日志文件有助于确定错误的原因,因为 JMeter 不会中断测试以显示错误对话框。