如何在Tsung 1.7中利用动态变量自定义输出指定日志内容
当然可以实现这个需求!
Tsung 1.7完全支持通过动态变量提取响应内容,并将自定义数据写入外部日志文件,下面是具体的实现步骤:
1. 提取响应中的目标数据
首先,你需要在HTTP请求的配置中,用<dyn_variable>标签结合正则表达式,分别提取响应里的时间戳和JSON的result字段值:
<request> <http url="/your-api-endpoint" method="POST" version="1.1"> <!-- 这里放你的请求体,比如对应的JSON-RPC请求内容 --> <body content_type="application/json">{"jsonrpc":"2.0","method":"your-method","params":[],"id":1}</body> </http> <!-- 提取Recv后面的时间戳 --> <dyn_variable name="recv_timestamp" regex="Recv:([0-9]+\.[0-9]+):" /> <!-- 提取JSON中的result字段值 --> <dyn_variable name="json_result" regex='"result":"([^"]+)"' /> </request>
recv_timestamp变量会捕获响应开头的时间戳(比如1559218599.939782);json_result变量会捕获JSON里result对应的十六进制字符串值。
2. 将提取的数据写入外部日志
接下来,在请求之后添加一个<action>动作,用Tsung的自定义日志功能把变量值写入指定文件:
<session name="jsonrpc-test" probability="100" type="ts_http"> <!-- 上面的请求配置放在这里 --> <request> <!-- ... 你的请求和动态变量定义 ... --> </request> <!-- 自定义日志动作 --> <action name="log-custom-data"> <log level="custom" category="custom_result_log" file="/absolute/path/to/your/custom.log"> <message format="tsung">${recv_timestamp},${json_result}</message> </log> </action> </session>
3. 全局配置日志文件
最后,在Tsung配置的根<tsung>标签下,添加全局日志文件的配置,确保Tsung能正确输出自定义日志:
<tsung loglevel="notice" version="1.0"> <!-- 其他全局配置(比如服务器、用户数等) --> <!-- 配置自定义日志文件 --> <logfile name="/absolute/path/to/your/custom.log" level="custom" /> </tsung>
注意事项
- 确保Tsung进程有目标日志文件的写入权限,路径最好用绝对路径避免问题;
- 如果响应格式有变化,需要调整正则表达式以匹配新的格式;
- 动态变量的作用域是当前session,所以如果在多个请求中需要复用,要注意变量的覆盖问题。
这样运行Tsung后,custom.log文件里就会每行记录一个请求的时间戳和对应的result值啦。
内容的提问来源于stack exchange,提问作者Stefano De Angelis
相关产品推荐
相关产品推荐

