Loadrunner提供了若干message函數,以在腳本回放中和腳本運行中,對外輸入信息,主要的函數有:數組
int lr_message (const char *format, exp1, exp2,...expn.);
中文解釋:lr_message函數將信息發送到日誌文件和輸入窗口。在VuGen中運行時,輸入文件爲output.txt。網絡
int lr_log_message (const char *format, exp1, exp2,...expn.);
中文解釋:lr_log_message函數將消息發送到Vuser或代理日誌文件(取決於應用程序),而不是發送到輸出窗口。經過向日志文件發送錯誤消息或其餘信息性消息,能夠將該函數用於調試。函數
int lr_error_message (const char *format, exp1, exp2,...expn. );
中文解釋:lr_error_message函數將錯誤消息發送到輸出窗口和Vuser日誌文件。要發送不是特定錯誤消息的特殊通知,請使用lr_output_message。字體
int lr_output_message (const char *format, exp1, exp2,...expn.);
中文解釋:lr_output_message函數將帶有腳本部分的行號的消息發送到輸出窗口和日誌文件。優化
int lr_vuser_status_message (const char *format);
中文解釋:lr_vuser_status_message函數向控制器或優化模塊控制檯的vuser窗口的「狀態」區域發送字符串。它還將該字符串發送到vuser日誌。從VuGen運行時,消息被髮送到output.txt。下面你們看例子:spa
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; }
例子說明:
一、message系列的函數參數格式和c語言中的printf格式是徹底相同的。
二、格式化輸入標誌符號"%",想必你們也比較熟悉。其中%d是十進制,%o是八進制,%x是十六進制,%s是字符;還有%g、%u、%c等,本身去查。
三、回放這個腳本後,進入腳本根目錄查看mdrv.log,全部輸出均可以在這裏找到。
四、lr_error_message回放日誌中顯示的是紅色的字體,且顯示語句所在行號;同時,若是腳本在controller中運行時,會生成一個error信息。
五、lr_vuser_status_message會在controller的vuser list的status列中顯示,controller每5秒刷新一次。
六、固然,也支持轉義字符的使用,列表以下:debug
\a 鈴聲(警告) \b Backspace 鍵 \f 換頁 \n 換行 \r 回車 \t 水平製表符 \v 垂直製表符 \' 單引號標記 \" 雙引號標記 \\ 反斜槓 \? 文本問號 \ooo ASCII 字符 - 八進制 支持的轉換字符有: %a ASCII 表示形式 %BX 大端(網絡順序)十六進制 %BO 大端(網絡順序)八進制 %BD 大端(網絡順序)十進制 %LX 小端十六進制 %LO 小端八進制 %LD 小端十進制
此外,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。日誌
unsigned int lr_get_debug_message ( );
中文解釋:lr_get_debug_message函數返回當前的日誌運行時設置。該設置肯定發送到輸出端的信息。日誌設置是使用運行時設置對話框或經過使用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 |
參數on_off說明:
【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" 關閉參數保存的系統日誌