Loadrunner message函数详细分析
2016-07-14 00:00
309 查看
Loadrunner提供了若干message函数,以在脚本回放中和脚本运行中,对外输入信息,主要的函数有:
int lr_message (const char *format, exp1, exp2,...expn.);
中文解释:lr_message函数将信息发送到日志文件和输入窗口。在VuGen中运行时,输入文件为output.txt。
中文解释:lr_log_message函数将消息发送到Vuser或代理日志文件(取决于应用程序),而不是发送到输出窗口。通过向日志文件发送错误消息或其他信息性消息,可以将该函数用于调试。
中文解释:lr_error_message函数将错误消息发送到输出窗口和Vuser日志文件。要发送不是特定错误消息的特殊通知,请使用lr_output_message。
中文解释:lr_output_message函数将带有脚本部分的行号的消息发送到输出窗口和日志文件。
中文解释:lr_vuser_status_message函数向控制器或优化模块控制台的vuser窗口的“状态”区域发送字符串。它还将该字符串发送到vuser日志。从VuGen运行时,消息被发送到output.txt。下面大家看例子:
例子说明:
1、message系列的函数参数格式和c语言中的printf格式是完全相同的。
2、格式化输入标志符号"%",想必大家也比较熟悉。其中%d是十进制,%o是八进制,%x是十六进制,%s是字符;还有%g、%u、%c等,自己去查。
3、回放这个脚本后,进入脚本根目录查看mdrv.log,所有输出都可以在这里找到。
4、lr_error_message回放日志中显示的是红色的字体,且显示语句所在行号;同时,如果脚本在controller中运行时,会生成一个error信息。
5、lr_vuser_status_message会在controller的vuser list的status列中显示,controller每5秒刷新一次。
6、当然,也支持转义字符的使用,列表如下:
此外,loadrunner还提供了在脚本中控制runtime-setting的log设置的函数。
int lr_debug_message (unsigned int message_level, const char *format, ... );
中文解释:lr_debug_message函数在指定的消息级别处于活动状态时发送一条调试信息。如果指定的消息级别未出于活动状态,则不发送消息。您可以从用户界面或者使用lr_set_debug_message, 将处于活动状态的消息级别设置为MSG_CLASS_BRIEF_LOG或MSG_CLASSS_EXTENDED_LOG。要确定当前级别,请使用lr_get_debug_message。
中文解释:lr_get_debug_message函数返回当前的日志运行时设置。该设置确定发送到输出端的信息。日志设置是使用运行时设置对话框或通过使用lr_set_debug_message函数指定的。
中文解释:lr_set_debug_message函数设置脚本执行的调试消息级别message_lvl。通过设置消息级别,可以确定发送哪些信息。 启动设置的方法是将LR_SWITCH_ON作为on_off传递,禁用设置的方法是传递LR_SWITCH_OFF。
参数message_level说明:
参数on_off说明:
【LR_SWITCH_ON】启用设置
【LR_SWITCH_OFF】禁用设置
看下面的小例子:
当我设置只有错误信息(error)打印【勾选send messages only when an error occurs】,例子运行结果是:当前是:513;
为什么不是512呢,我发现我实际选择的是【Enable logging + send messages only when an error occurs】,按上面的
参数说明,就是【1+512】,也就是513了;
因此:
lr_get_debug_message返回的int数其实是所有勾选操作的代表值相加!
再看下面设置的例子:
因为设置了runtime-setting不打印任何日志,所以正常运行脚本应该没有任何日志输出;
但是使用lr_set_debug_message函数打开了日志的设置(输出保存参数操作的日志)
因此脚本运行到lr_save_string("aa",a)时,就输出了日志如下:
打开参数保存的系统日志
Action.c(7): Notify: Saving Parameter "ABC = aa"
关闭参数保存的系统日志
1、lr_message
int lr_message (const char *format, exp1, exp2,...expn.);中文解释:lr_message函数将信息发送到日志文件和输入窗口。在VuGen中运行时,输入文件为output.txt。
2、lr_log_message
int lr_log_message (const char *format, exp1, exp2,...expn.);中文解释:lr_log_message函数将消息发送到Vuser或代理日志文件(取决于应用程序),而不是发送到输出窗口。通过向日志文件发送错误消息或其他信息性消息,可以将该函数用于调试。
3、lr_error_message
int lr_error_message (const char *format, exp1, exp2,...expn. );中文解释:lr_error_message函数将错误消息发送到输出窗口和Vuser日志文件。要发送不是特定错误消息的特殊通知,请使用lr_output_message。
4、lr_output_message
int lr_output_message (const char *format, exp1, exp2,...expn.);中文解释:lr_output_message函数将带有脚本部分的行号的消息发送到输出窗口和日志文件。
5、lr_vuser_status_message
int lr_vuser_status_message (const char *format);中文解释:lr_vuser_status_message函数向控制器或优化模块控制台的vuser窗口的“状态”区域发送字符串。它还将该字符串发送到vuser日志。从VuGen运行时,消息被发送到output.txt。下面大家看例子:
Action() { int i,j,k; char *message; j = k = 1000; message = "信息"; lr_message("****************输出区域开始*****************"); lr_message("lr_message %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j); lr_log_message("lr_log_message %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j); lr_error_message("lr_error_message %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j); lr_output_message("lr_output_message %s:十进制=%d,八进制=%o,十六进制=0x%x",message,j,j,j); lr_message("****************输出区域结束*****************"); for (i=1;i<6;i++) { k += 1000; lr_think_time (5); lr_vuser_status_message("第%d次:%s,十进制=%d,八进制=%o,十六进制=0x%x",i,message,k,k,k); } return 0; }
例子说明:
1、message系列的函数参数格式和c语言中的printf格式是完全相同的。
2、格式化输入标志符号"%",想必大家也比较熟悉。其中%d是十进制,%o是八进制,%x是十六进制,%s是字符;还有%g、%u、%c等,自己去查。
3、回放这个脚本后,进入脚本根目录查看mdrv.log,所有输出都可以在这里找到。
4、lr_error_message回放日志中显示的是红色的字体,且显示语句所在行号;同时,如果脚本在controller中运行时,会生成一个error信息。
5、lr_vuser_status_message会在controller的vuser list的status列中显示,controller每5秒刷新一次。
6、当然,也支持转义字符的使用,列表如下:
\a 铃声(警告) \b Backspace 键 \f 换页 \n 换行 \r 回车 \t 水平制表符 \v 垂直制表符 \' 单引号标记 \" 双引号标记 \\ 反斜杠 \? 文本问号 \ooo ASCII 字符 - 八进制 支持的转换字符有: %a ASCII 表示形式 %BX 大端(网络顺序)十六进制 %BO 大端(网络顺序)八进制 %BD 大端(网络顺序)十进制 %LX 小端十六进制 %LO 小端八进制 %LD 小端十进制
此外,loadrunner还提供了在脚本中控制runtime-setting的log设置的函数。
6、lr_debug_message函数组
(1)lr_debug_message
int lr_debug_message (unsigned int message_level, const char *format, ... );中文解释:lr_debug_message函数在指定的消息级别处于活动状态时发送一条调试信息。如果指定的消息级别未出于活动状态,则不发送消息。您可以从用户界面或者使用lr_set_debug_message, 将处于活动状态的消息级别设置为MSG_CLASS_BRIEF_LOG或MSG_CLASSS_EXTENDED_LOG。要确定当前级别,请使用lr_get_debug_message。
(2) lr_get_debug_message
unsigned int lr_get_debug_message ( );中文解释:lr_get_debug_message函数返回当前的日志运行时设置。该设置确定发送到输出端的信息。日志设置是使用运行时设置对话框或通过使用lr_set_debug_message函数指定的。
(3)lr_set_debug_message
int lr_set_debug_message (unsigned int message_level, unsigned int on_off);中文解释:lr_set_debug_message函数设置脚本执行的调试消息级别message_lvl。通过设置消息级别,可以确定发送哪些信息。 启动设置的方法是将LR_SWITCH_ON作为on_off传递,禁用设置的方法是传递LR_SWITCH_OFF。
参数message_level说明:
日志级别 | C语言标志 | 值 | Runtime-setting - Log操作 |
Disabled | LR_MSG_CLASS_DISABLE_LOG | 0 | 不勾选Enable logging |
Brief | LR_MSG_CLASS_BRIEF_LOG | 1 | 勾选Standard log |
Extended Log | LR_MSG_CLASS_EXTENDED_LOG | 16 | 勾选Extended log |
Result Data | LR_MSG_CLASS_RESULT_DATA | 2 | 勾选Data returned by server |
Parameter Substitution | LR_MSG_CLASS_PARAMETERS | 4 | 勾选Parameter substitution |
Full Run-Time Trace | LR_MSG_CLASS_FULL_TRACE | 8 | 勾选 Advanced trace |
Only on error | LR_MSG_CLASS_JIT_LOG_ON_ERROR | 512 | 勾选send messages only when an error occurs |
【LR_SWITCH_ON】启用设置
【LR_SWITCH_OFF】禁用设置
看下面的小例子:
Action() { int log_leavl; log_leavl = lr_get_debug_message(); lr_error_message ("当前是:%d",log_leavl); return 0; }
当我设置只有错误信息(error)打印【勾选send messages only when an error occurs】,例子运行结果是:当前是:513;
为什么不是512呢,我发现我实际选择的是【Enable logging + send messages only when an error occurs】,按上面的
参数说明,就是【1+512】,也就是513了;
因此:
lr_get_debug_message返回的int数其实是所有勾选操作的代表值相加!
再看下面设置的例子:
Action() { //设置runtime-setting的日志选项【不勾选Enable logging】 char *a; a = "ABC"; lr_set_debug_message (LR_MSG_CLASS_EXTENDED_LOG |LR_MSG_CLASS_PARAMETERS,LR_SWITCH_ON); //打开Runtime-setting Log 的Parameter substitution设置 lr_debug_message(LR_MSG_CLASS_PARAMETERS,"打开参数保存的系统日志"); lr_save_string("aa",a); lr_debug_message(LR_MSG_CLASS_PARAMETERS,"关闭参数保存的系统日志"); lr_set_debug_message (LR_MSG_CLASS_EXTENDED_LOG |LR_MSG_CLASS_PARAMETERS,LR_SWITCH_OFF); //关闭Runtime-setting Log 的Parameter substitution设置 return 0; }
因为设置了runtime-setting不打印任何日志,所以正常运行脚本应该没有任何日志输出;
但是使用lr_set_debug_message函数打开了日志的设置(输出保存参数操作的日志)
因此脚本运行到lr_save_string("aa",a)时,就输出了日志如下:
打开参数保存的系统日志
Action.c(7): Notify: Saving Parameter "ABC = aa"
关闭参数保存的系统日志
相关文章推荐
- MySQL Server 日志
- MSSQL 2005 LOG备份webshell的方法
- 使用MySQL Slow Log来解决MySQL CPU占用高的问题
- 清理SQL Server 2008日志文件Cannot shrink log file 2 的解决方案
- Android系统开发中log的使用方法及简单的原理
- android杂记:C++文件的添加log方法分享
- 提取oralce当天的alert log的shell脚本代码
- mysql正确安全清空在线慢查询日志slow log的流程分享
- php实现的debug log日志操作类实例
- PHP error_log()将错误信息写入一个文件(定义和用法)
- Apache启动错误Permission denied: httpd: could not open error log file解决方法
- android的消息处理机制(图文+源码分析)―Looper/Handler/Message
- Android使用Handler和Message更新UI
- Android开发笔记之:Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
- Android编程之基于Log演示一个activity生命周期实例详解
- PHP如何将log信息写入服务器中的log文件
- SQL Server中减小Log文件尺寸的方法分享
- Python中使用logging模块打印log日志详解
- python根据文件大小打log日志
- Android将应用调试log信息保存在SD卡的方法