开始使用

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 不会中断测试以显示错误对话框。