====== XTran 로깅 가이드 ====== ===== 예시 ===== 템플릿 위치: /STUDIO/SCRIPT/xtran_log 템플릿 파일 * [[xf5projecthome>template/screen/STUDIO/SCRIPT/xtran_log.xml|xtran_log.xml]] * [[xf5projecthome>template/screen/STUDIO/SCRIPT/xtran_log.js|xtran_log.js]] * [[xf5projecthome>template/template.html?xframe_screen_url=/STUDIO/SCRIPT/xtran_log|새창으로 실행]] echo ''; echo ''; echo ''; ==== 화면 스크립트 ==== /** * 가정 사항 * SYSUtil이라는 공통 모듈에 아래의 CallbackXTranLog 함수 있음 * 현재 화면이 "XTRANLOG" 팝업으로 이름으로 모달리스 방식으로 로드됨 * 예시) factory.loadpopup("XTRANLOG", "/SYS/UTIL/XTranLog", "XTRANLOG", false, XFD_BORDER_RESIZE, 0, 0, true, bModal, screen); * CALLBACK_XTRAN_DATALOG 실행 파라미터값: "SYSUtil.CallbackXTranLog" * XTRAN_DATALOG_SHOWTYPE 실행 파라미터값: 2 * 예시) 0:console trace(default), 1:browser console, 2:callback * objXTranLogInfo 파라미터 구조 * var objXTranLogInfo = { * start_date: "20211014", // 거래 시작 일자 * start_time: "123456", // 거래 시작 시각 * screen_url: "screen_url", // 화면 URL * screen_id: "screen_id", // 화면 ID * xtran_mapid: "xtran_mapid", // XTRANMAP ID * xtran_url: "xtran_url", // XTRANMAP URL * xtran_result: "xtran_result", // XTRANMAP RESULT * time_total: "ms", // 데이터 송신전 시간부터 데이터 수신, 처리, 콜백함수 처리 완료 시간 기준(단위: ms) * // (time_server + time_engine + time_callback) * time_server: "ms", // 데이터 송신전 시간부터 데이터 수신 완료 시간 기준(단위: ms) * time_engine: "ms", // 데이터 수신 완료 시간부터 데이터 처리 완료 시간 기준(단위: ms) * time_callback: "ms", // 데이터 처리 완료 시간부터 콜백함수 처리 완료 시간 기준(단위: ms) * send_data: '{ "send_data": "send_data" }', // 송신 데이터 * recv_data: '{ "recv_data": "recv_data" }' // 수신 데이터 * }; */ // SYUtil 공통 모듈에 추가될 함수 예시 시작 /* function CallbackXTranLog(objXTranLogInfo) { var objPopupScreen, objPopupMember; objPopupScreen = factory.findpopup("XTRANLOG"); if (objPopupScreen) { objPopupMember = objPopupScreen.getmembers(); if (objPopupMember) { objPopupMember.process_xtranloginfo(objXTranLogInfo); } } } */ // JSON 문자열을 트리형태로 표시처리 /** * JSON 문자열을 트리형태로 표시처리 */ function display_json_data(json_view_div, json_data_str, is_expand_tree) { var json_data_tree; json_view_div.innerHTML = ''; if (json_data_str.length == 0) { return; } try { json_data_tree = JsonView.createTree(json_data_str); JsonView.render(json_data_tree, json_view_div); if (is_expand_tree) { JsonView.expandChildren(json_data_tree); } } catch(error) { alert(error.message); } } function process_xtranloginfo(objXTranLogInfo) { var row_index; row_index = grd_list.addrow(); grd_list.setitemtext(row_index, 0, objXTranLogInfo.start_date); grd_list.setitemtext(row_index, 1, objXTranLogInfo.start_time); grd_list.setitemtext(row_index, 2, objXTranLogInfo.screen_url); grd_list.setitemtext(row_index, 3, objXTranLogInfo.screen_id); grd_list.setitemtext(row_index, 4, objXTranLogInfo.xtran_mapid); grd_list.setitemtext(row_index, 5, objXTranLogInfo.xtran_url); grd_list.setitemtext(row_index, 6, objXTranLogInfo.xtran_result); grd_list.setitemtext(row_index, 7, objXTranLogInfo.time_total); grd_list.setitemtext(row_index, 8, objXTranLogInfo.time_server); grd_list.setitemtext(row_index, 9, objXTranLogInfo.time_engine); grd_list.setitemtext(row_index, 10, objXTranLogInfo.time_callback); // 송수신 데이터가 너무 큰 경우, 제외 처리 추가 필요함 if (objXTranLogInfo.send_data.length > 100000) { } if (objXTranLogInfo.recv_data.length > 100000) { } grd_list.setitemtext(row_index, 11, objXTranLogInfo.send_data); grd_list.setitemtext(row_index, 12, objXTranLogInfo.recv_data); } // 화면 로드 이벤트 function screen_on_load() { // JSON 데이터 표시를 위한 CSS 및 JavaScript 로드 screen.loadcss("/xf5/html/jsonview.bundle.css"); screen.loadjs("/xf5/html/jsonview.bundle.js"); // 0:console trace(default), 1:browser console, 2:callback) factory.setxtrandatalogshowtype(2); cbo_datalog.setselectedcode(factory.getxtrandatalog()); } // 그리드 아이템 클릭 이벤트 function grd_list_on_itemclick(objInst, nClickRow, nClickColumn, bBtnClick, nImgIndex, strImgUrl) { if (nClickRow < 0) { return; } // 선택된 아이템에 해당하는 송수신 데이터를 표시 display_json_data(div_senddata.getdom(), grd_list.getitemtext(nClickRow, 11), true); display_json_data(div_recvdata.getdom(), grd_list.getitemtext(nClickRow, 12), true); } // "체크행 삭제" 버튼 이벤트 처리 function btn_delete_check_on_mouseup(objInst) { grd_list.deletecheckedrow(); } // "전체 삭제" 버튼 이벤트 처리 function btn_delete_all_on_mouseup(objInst) { grd_list.deleteall(); } // "닫기" 버튼 이벤트 처리 function btn_close_on_mouseup(objInst) { screen.unload(); } // "테스트" 버튼 이벤트 처리 function btn_test_on_mouseup(objInst) { var objXTranLogInfo = { start_date: "20211014", start_time: "123456", screen_url: "screen_url", screen_id: "screen_id", xtran_mapid: "xtran_mapid", xtran_url: "xtran_url", xtran_result: "xtran_result", time_total: "ms", time_server: "ms", time_engine: "ms", time_callback: "ms", send_data: '{ "send_data": "send_data" }', recv_data: '{ "recv_data": "recv_data" }' }; process_xtranloginfo(objXTranLogInfo); } function btn_setxtrandatalog_on_mouseup(objInst) { // xFrame5 콘솔창에 송수신 데이터 로깅 옵션 설정 factory.setxtrandatalog(cbo_datalog.getselectedcode()); }