Jmeter只记录HTTPSampler和JSR223侦听器

Jmeter只记录HTTPSampler和JSR223侦听器,jmeter,log4j,httprequest,log4j2,jsr223,Jmeter,Log4j,Httprequest,Log4j2,Jsr223,尝试在测试计划级别使用JSR223侦听器,以便侦听所有线程组。我想要实现的是,它只记录每个HTTP请求的方法(GET、POST、HEAD、OPTIONS、PUT、DELETE和TRACE),并打印每个方法、URL、响应代码、值和响应数据 环顾四周,发现了一些左右和中间的片段,并得出以下结论: try{ if (sampler.getUrl().toString().contains("http")){ log.warn('Method: ' + sampler.getMethod

尝试在测试计划级别使用JSR223侦听器,以便侦听所有线程组。我想要实现的是,它只记录每个HTTP请求的方法(GET、POST、HEAD、OPTIONS、PUT、DELETE和TRACE),并打印每个方法、URL、响应代码、值和响应数据

环顾四周,发现了一些左右和中间的片段,并得出以下结论:

try{
    if (sampler.getUrl().toString().contains("http")){
    log.warn('Method: ' + sampler.getMethod() + ' URL: ' + sampler.getUrl().toString());
    sampler.getArguments().each {arg ->
    log.warn('CODE: ' + prev.getResponseCode() + ' Value: ' + arg.getStringValue())
    }
    log.warn('CODE: ' + prev.getResponseCode() + ' ResponseData: ' + prev.getResponseDataAsString());
    }else{
    log.warn('Not a HTTPRequest')   
    }
}
catch (Throwable ex) 
{
    log.warn('Something went wrong', ex);
    throw ex;
}

我可以根据需要在日志查看器中获得结果

我面临的挑战是,如果任何其他采样器类型处于活动状态,它将记录一个错误,因为该采样器不是HTTP请求,而是虚拟采样器,因此它无法返回请求的值

groovy.lang.MissingMethodException:没有方法的签名:kg.apc.jmeter.samplers.DummySampler.getUrl()

现在,我的示例只显示了线程组中的两个采样器,但是想象一下有100个不同的采样器 我需要将我的'if'语句更改为不检查sampler参数,而是检查sampler类型(HTTPRequest),但是好的老google返回的内容不多。那么,是否有可能有一个if语句来检查采样器的类型,以及它的语法是什么


if(sampler==HTTPRequest)

您可以使用
sampler.getClass()
并比较它以检查HTTP请求是否:

if("HTTPSamplerProxy".equals(sampler.getClass().getSimpleName())) {
您可以使用日志检查类名:

log.info(sampler.getClass().getSimpleName());