如何在Java代码中禁用JMeter控制台日志输出?
解决Java代码开发JMeter 3.0测试计划的控制台冗余日志问题
针对你在JavaSE 1.7 + JMeter 3.0 + Windows 7环境下遇到的控制台大量冗余日志问题,我整理了几个适配这个旧版本的解决方案,你可以逐一尝试:
1. 直接在Java代码中配置日志级别(最直接有效)
因为JMeter 3.0使用的是Log4J 1.x,你可以在测试代码启动前,直接指定特定日志源的级别,过滤掉INFO和DEBUG级别的冗余信息:
import org.apache.log4j.Logger; import org.apache.log4j.Level; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.engine.StandardJMeterEngine; public class JMeterTestPlan { public static void main(String[] args) { // 关闭jmeter和jorphan的冗余日志,只保留WARN及以上级别 Logger.getLogger("jmeter").setLevel(Level.WARN); Logger.getLogger("jorphan").setLevel(Level.WARN); // 初始化JMeter配置(根据你的实际路径调整) JMeterUtils.loadJMeterProperties("D:/apache-jmeter-3.0/bin/jmeter.properties"); JMeterUtils.setJMeterHome("D:/apache-jmeter-3.0"); JMeterUtils.initLocale(); // 启动你的测试计划 StandardJMeterEngine jmeter = new StandardJMeterEngine(); // ... 你的测试计划构建代码 ... jmeter.run(); } }
2. 确保Log4J配置文件被正确加载
如果你偏好通过配置文件管理日志,需要确保Log4J能读取到你的配置:
- 找到JMeter安装目录下的
bin/log4j.conf文件,修改以下配置项:# 将jmeter和jorphan的日志级别设为WARN log4j.category.jmeter=WARN log4j.category.jorphan=WARN - 在启动Java程序时,通过JVM参数指定配置文件路径:
-Dlog4j.configuration=file:///D:/apache-jmeter-3.0/bin/log4j.conf - 或者在代码中手动加载配置:
import org.apache.log4j.PropertyConfigurator; public class JMeterTestPlan { public static void main(String[] args) { // 加载Log4J配置文件 PropertyConfigurator.configure("D:/apache-jmeter-3.0/bin/log4j.conf"); // 后续初始化和测试代码... } }
3. 消除summariser相关的警告日志
你控制台里的两个WARN日志是因为缺少summariser.log和summariser.out属性,可通过修改jmeter.properties消除:
- 打开JMeter安装目录下的
bin/jmeter.properties,添加以下两行:summariser.log=false summariser.out=false - 确保代码中加载了这个配置文件(参考方案1中的
JMeterUtils.loadJMeterProperties方法)
这些方法都是专门适配JMeter 3.0和Java 7的,因为版本较旧,新的Log4J 2.x或JMeter高版本的配置方法在这里不适用。
内容的提问来源于stack exchange,提问作者Winnie Tsou
相关产品推荐
相关产品推荐

