github.com/unirita/cuto@v0.9.8-0.20160830082821-aa6652f877b7/console/console.go (about) 1 // Copyright 2015 unirita Inc. 2 // Created 2015/04/10 shanxia 3 4 package console 5 6 import ( 7 "fmt" 8 "os" 9 10 "github.com/unirita/cuto/log" 11 ) 12 13 // USAGE表示用の定義メッセージ 14 const USAGE = `Usage : 15 master.exe [-v] [-n Jobnetwork] [-s] [-c ConfigFile] [-r Instance Id] 16 17 Option : 18 -v : Print master version. 19 -n bpmn name : Designate a bpmn file name.(Without extensions.) 20 -s : Execute Jobnetwork. 21 -c ConfigFile : Designate config file path. 22 If it is omitted, '<Current Directory>/master.ini' will be used. 23 -r Instance Id : To re-run the abnormally terminated Jobnetwork. 24 25 Copyright 2015 unirita Inc. 26 ` 27 28 var stack_msg = []string{"CTM019E", "CTS019E", "CTU003E"} 29 30 // showユーティリティのUSAGE表示用の定義メッセージ 31 const USAGE_SHOW = `Usage : 32 show.exe [-v] [-jobnet="bpmn file name"] [-From="From date"] [-to="To date"] [-status="normal" | "abnormal" | "running"] [-format="json" | "csv"] [-nid="Instance Id"] 33 34 Option : 35 -v : Print master version. 36 -jobnet=jobnet : Designate a bpmn name. 37 -from=yyyymmdd : From date is designated. 38 -to=yyyymmdd : To date is designated. 39 -status=normal : Status indicates only something of NORMAL-END. 40 -status=abnormal : Status indicates only something of ABNORMAL-END. 41 -status=running : Status indicates only something of RUNNING. 42 -format=json : It outputs by the form of JSON. 43 -format=csv : It outputs by the form of CSV. 44 -utc : Consider timezone as UTC. 45 -nid=InstanceId : Designate a instance id. 46 47 When omitting [-from] and [-to], only Jobnetwork begun today is indicated. 48 49 Copyright 2015 unirita Inc. 50 ` 51 52 // コンソールメッセージ一覧 53 var msgs = map[string]string{ 54 "CTM001I": "GOCUTO MASTER STARTED. PID [%d] VERSION [%v]", 55 "CTM002I": "GOCUTO MASTER ENDED. RC [%d]", 56 "CTM003E": "INVALID ARGUMENT.", 57 "CTM004E": "FAILED TO READ EXPAND JOB CONFIG FILE [%s].", 58 "CTM005E": "CONFIG PARM IS NOT EXACT FORMAT. REASON [%s]", 59 "CTM006W": "INVALID VALUE [%s / %s]. USE DEFAULT VALUE [%s]", 60 "CTM007I": "BIND ADDRESS[%v] USED PORT[%v].", 61 "CTM008I": "REMINDER: EVALUATION PERIOD WILL EXPIRE IN [%d] DAYS.", 62 "CTM009I": "LICENSE VALID TILL %04d/%02d/%02d.", 63 "CTM010E": "FAILED TO READ BPMN FILE [%s].", 64 "CTM011E": "[%s] IS NOT EXACT FORMAT. REASON [%s]", 65 "CTM012I": "[%s] STARTED. INSTANCE [%d]", 66 "CTM013I": "[%s] ENDED. INSTANCE [%d] STATUS [%s]", 67 "CTM014I": "SENDED REQUEST [%s] START MESSAGE. ID [%s] NODE [%s] PORT [%d]", 68 "CTM015I": "RECEIVED RESPONSE [%s] END MESSAGE. ID [%s] STATUS [%s]", 69 "CTM016W": "UNABLE TO CONNECT SERVANT. NODE[%s] PORT[%d] EC [%d] MSG [%s]", 70 "CTM017W": "UNABLE TO SEND MESSAGE. NODE[%s] PORT[%d] EC [%d] MSG [%s]", 71 "CTM018W": "TIME OUT WAITING JOB EXECUTE.", 72 "CTM019E": "EXCEPTION OCCURED - %s", 73 "CTM020I": "BPMN FILE [%s] IS VALID.", 74 "CTM021E": "COULD NOT INITIALIZE LOGGER. REASON[%s]", 75 "CTM022I": "JOB [%s] IS RUNNING FOR %d MINUTES.", 76 "CTM023I": "JOB [%s] STARTED AT NODE [%s]. INSTANCE [%d] JOBID [%s].", 77 "CTM024I": "JOB [%s] ENDED AT NODE [%s]. INSTANCE [%d] JOBID [%s] STATUS [%v].", 78 "CTM025W": "JOB [%s] ABNORMAL ENDED AT NODE [%s]. INSTANCE [%d] JOBID [%s] STATUS [%v] DETAIL [%s].", 79 "CTM026I": "SEE JOBLOG FILE [%s] ON NODE [%s].", 80 "CTM027W": "JOB [%s] REQUEST FAILED. RETRYING...(%d of %d)", 81 "CTM028W": "JOB [%s] REQUEST FAILED. TRYING TO REQUEST SECONDARY SERVANT[%s].", 82 "CTM029I": "INSTANCE [%d] ALREADY ENDED WITH NO ERROR.", 83 "1": "", 84 "CTS001I": "GOCUTO SERVANT STARTED. PID [%v] VERSION [%s]", 85 "CTS002I": "GOCUTO SERVANT ENDED. RC [%d].", 86 "CTS003E": "INVALID ARGUMENT.", 87 "CTS004W": "FAILED TO READ CONFIG FILE [%s]. USE DEFAULT VALUE", 88 "CTS005E": "CONFIG PARM IS NOT EXACT FORMAT. REASON [%s]", 89 "CTS006W": "CONFIG PARM [%s / %s] USE DEFAULT VALUE [%v]", 90 "CTS007I": "BIND ADDRESS[%v] USED PORT[%v].", 91 "CTS008I": "REMINDER: EVALUATION PERIOD WILL EXPIRE IN [%d] DAYS.", 92 "CTS009I": "LICENSE VALID TILL %s/%s/%s.", 93 "CTS010I": "JOB [%s] STARTED. INSTANCE [%d] ID [%s] PID [%d].", 94 "CTS011I": "JOB [%s] ENDED. INSTANCE [%d] ID [%s] STATUS [%d] RC [%d].", 95 "CTS012E": "NOT FOUND JOB FILE [%s].", 96 "CTS013E": "ENABLE TO EXECUTE JOB [%s].", 97 "CTS014I": "RECEIVED REQUEST MESSAGE.", 98 "CTS015E": "RECEIVED MESSAGE IS NOT EXACT FORMAL.DETAIL[%s]", 99 "CTS016I": "EXECUTION OF JOB, I STAND BY. INSTANCE [%d] ID [%s] NAME [%s].", 100 "CTS017I": "SENDED RESPONSE MESSAGE.", 101 "CTS018E": "ENABLE TO SEND RESPONSE MESSAGE.", 102 "CTS019E": "EXCEPTION OCCURED - %s", 103 "CTS020I": "SERVANT CHILD STARTED. PID[%d]", 104 "CTS021I": "SERVANT CHILD ENDED. RC[%d]", 105 "CTS022E": "UNABLE TO OUTPUT JOBLOG. MSG[%s]", 106 "CTS023E": "COULD NOT INITIALIZE LOGGER. REASON[%s]", 107 "2": "", 108 "CTU001I": "SHOW UTILITY STARTED. VERSION [%v]", 109 "CTU002I": "SHOW UTILITY ENDED. RC [%d].", 110 "CTU003E": "EXCEPTION OCCURED - %v", 111 "CTU004E": "AN INTERNAL ERROR OCCURRED. - %v", 112 "CTU005W": "FAILED TO JOB INFORMATION NID[%v]. - %v", 113 "CTU006E": "NOT FOUND CONFIG FILE. - %v", 114 } 115 116 // 標準出力へメッセージコードcodeに対応したメッセージを表示する。 117 // 118 // param : code メッセージコードID。 119 // 120 // param : a... メッセージの書式制御文字に渡す内容。 121 // 122 // return : 出力文字数。 123 // 124 // return : エラー情報。 125 func Display(code string, a ...interface{}) (int, error) { 126 msg := GetMessage(code, a...) 127 log.Info(msg) 128 129 for _, s := range stack_msg { 130 if code == s { 131 PrintStack() 132 } 133 } 134 return fmt.Println(msg) 135 } 136 137 // 標準エラー出力へメッセージコードcodeに対応したメッセージを表示する。 138 // 139 // param : code メッセージコードID。 140 // 141 // param : a... メッセージの書式制御文字に渡す内容。 142 // 143 // return : 出力文字数。 144 // 145 // return : エラー情報。 146 func DisplayError(code string, a ...interface{}) (int, error) { 147 msg := GetMessage(code, a...) 148 log.Error(msg) 149 150 for _, s := range stack_msg { 151 if code == s { 152 PrintStack() 153 } 154 } 155 return fmt.Fprintln(os.Stderr, msg) 156 } 157 158 // 出力メッセージを文字列型で取得する。 159 // 160 // param : code メッセージコードID。 161 // 162 // param : a... メッセージの書式制御文字に渡す内容。 163 // 164 // return : 取得したメッセージ 165 func GetMessage(code string, a ...interface{}) string { 166 return fmt.Sprintf("%s %s", code, fmt.Sprintf(msgs[code], a...)) 167 }