仅带有JSR223侦听器的Jmeter日志HTTPSampler

问题描述 投票:0回答:1

[尝试在测试计划级别使用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;
}

enter image description here

并且我根据需要在日志查看器中获得结果。

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

enter image description here

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

现在,我的示例仅显示线程组中的两个采样器,但是假设有两个100个不同的采样器弄清楚我需要更改'if'语句以不检查sampler参数,而是检查sampler类型(HTTPRequest),但是好的旧Google返回的内容不多。因此,甚至有可能使用if语句检查采样器类型,以及该语法是什么?

if (sampler==HTTPRequest) ???

jmeter log4j httprequest log4j2 jsr223
1个回答
1
投票

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

if("HTTPSamplerProxy".equals(sampler.getClass().getSimpleName())) {

您可以使用日志检查班级名称:

log.info(sampler.getClass().getSimpleName());
© www.soinside.com 2019 - 2024. All rights reserved.