diff --git a/icslog/logoutput.go b/icslog/logoutput.go index 98f2283..7e2e234 100644 --- a/icslog/logoutput.go +++ b/icslog/logoutput.go @@ -87,9 +87,9 @@ func (l *IcsLog) Printf(level int, sessionID int, format string, a ...interface{ } var logmsg string if sessionID >= 0 { - logmsg = fmt.Sprintf("[%s][%03d]> %s", IcsLogLevelStr[level], sessionID, msg) + logmsg = fmt.Sprintf("%s", msg) } else { - logmsg = fmt.Sprintf("[%s][-1]> %s", IcsLogLevelStr[level], msg) + logmsg = fmt.Sprintf("%s", msg) } l.logger.Output(2, logmsg) @@ -173,9 +173,9 @@ func (l *IcsLog) Print(level int, sessionID int, msg string) { } var logmsg string if sessionID >= 0 { - logmsg = fmt.Sprintf("[%s][%03d]> %s", IcsLogLevelStr[level], sessionID, msg) + logmsg = fmt.Sprintf("%s", msg) } else { - logmsg = fmt.Sprintf("[%s][-1]> %s", IcsLogLevelStr[level], msg) + logmsg = fmt.Sprintf("%s", msg) } l.logger.Output(2, logmsg) if l.LogFile != nil { diff --git a/icsstat/icsstat.go b/icsstat/icsstat.go index 9a54ff8..bafe25a 100644 --- a/icsstat/icsstat.go +++ b/icsstat/icsstat.go @@ -36,6 +36,10 @@ type StatInfos struct { SvcType string // 20 SvcReqTime string // 17 SvcRspTime string // 17 + TransferNo string // 20 + CallTime string // 5 + CallType string // 10 + FunName string // 30 ResultMsg string // 256 SttText string // 8192 TtsText string // 1024 @@ -43,7 +47,6 @@ type StatInfos struct { const ( //necessary value - STAT_INFO = 0 SEQ_ID = STAT_INFO + 25 LOG_TIME = SEQ_ID + 14 @@ -69,9 +72,13 @@ const ( SVC_TYPE = CONC_CALL + 20 SVC_REQ_TIME = SVC_TYPE + 17 SVC_RSP_TIME = SVC_REQ_TIME + 17 - RESULT_MSG = SVC_RSP_TIME + 17 - STT_TEXT = RESULT_MSG + 256 - TTS_TEXT = STT_TEXT + 8192 //slice 86..? + TRANSFER_NO = SVC_RSP_TIME + 20 + CALL_TIME = TRANSFER_NO + 5 + CALL_TYPE = CALL_TIME + 10 + FUN_NAME = CALL_TYPE + 30 + RESULT_MSG = FUN_NAME + 255 + STT_TEXT = RESULT_MSG + 8192 + TTS_TEXT = STT_TEXT + 1024 ) func ListenStatMNG() (icserr *icserror.IcsError) { @@ -85,7 +92,7 @@ func ListenStatMNG() (icserr *icserror.IcsError) { statLocalAddr := icsnet.NewNetAddrWithIPAddr(statLocalAddrStr) var cmdErr *icserror.IcsError - statTCP, cmdErr := icsnet.ListenAndServeTCP(&statLocalAddr, nil, "\r\n\r\n", BotCommand) + statTCP, cmdErr := icsnet.ListenAndServeTCP(&statLocalAddr, nil, "\r\n\r\n", StatsCommand) if cmdErr != nil { l.Printf(icslog.LOG_LEVEL_FATAL, -1, "%s", cmdErr.GetError()) return nil @@ -96,52 +103,61 @@ func ListenStatMNG() (icserr *icserror.IcsError) { return nil } -func BotCommand(t *icsnet.IcsTCPNet, bufend string) { +func StatsCommand(t *icsnet.IcsTCPNet, bufend string) { l := icslog.GetIcsLog() statInfos := new(StatInfos) + count := 0 + defer t.Close() l.Printf(icslog.LOG_LEVEL_INFO, -1, "Connected from - %s", t.RemoteAddr()) for { - statReads, rlen, rerr := t.ReadS(10018, bufend) // 여기서 전체 몇 byte씩 읽어서 로그를 찍을건지 알아야함 + statReads, rlen, rerr := t.ReadS(10137, bufend) // 여기서 전체 몇 byte씩 읽어서 로그를 찍을건지 알아야함 if rerr != nil { if rerr.GetError() != io.EOF { l.Printf(icslog.LOG_LEVEL_ERROR, -1, "[Stat Command] ReadS Error! - %s[%d:%d]", rerr.GetError(), rlen, len(statReads)) + // t.Close() } - break + continue } else { + seqId := fmt.Sprintf("%05d", count) fmt.Printf("Recved Stat Command(%s) %d \n", statReads, rlen) statInfos.ChangeByteToString(statReads) insLog := "" - insLog += fmt.Sprintf("%s\n", statInfos.CallId) - insLog += fmt.Sprintf("%s\n", statInfos.SeqId) - insLog += fmt.Sprintf("%s\n", statInfos.LogTime) - insLog += fmt.Sprintf("%s\n", statInfos.LogType) - insLog += fmt.Sprintf("%s\n", statInfos.Sid) - insLog += fmt.Sprintf("%s\n", statInfos.ResultCode) - insLog += fmt.Sprintf("%s\n", statInfos.ReqTime) - insLog += fmt.Sprintf("%s\n", statInfos.RspTime) - insLog += fmt.Sprintf("%s\n", statInfos.ClientIp) - insLog += fmt.Sprintf("%s\n", statInfos.DevInfo) - insLog += fmt.Sprintf("%s\n", statInfos.OsInfo) - insLog += fmt.Sprintf("%s\n", statInfos.NwInfo) - insLog += fmt.Sprintf("%s\n", statInfos.SvcName) - insLog += fmt.Sprintf("%s\n", statInfos.DevModel) - insLog += fmt.Sprintf("%s\n", statInfos.CarrierType) - insLog += fmt.Sprintf("%s\n", statInfos.HostName) - insLog += fmt.Sprintf("%s\n", statInfos.ScnName) - insLog += fmt.Sprintf("%s\n", statInfos.CallId) - insLog += fmt.Sprintf("%s\n", statInfos.TrId) - insLog += fmt.Sprintf("%s\n", statInfos.ConcCall) - insLog += fmt.Sprintf("%s\n", statInfos.SvcType) - insLog += fmt.Sprintf("%s\n", statInfos.SvcReqTime) - insLog += fmt.Sprintf("%s\n", statInfos.SvcRspTime) - insLog += fmt.Sprintf("%s\n", statInfos.ResultMsg) - insLog += fmt.Sprintf("%s\n", statInfos.SttText) - insLog += fmt.Sprintf("%s\n", statInfos.TtsText) + // insLog += fmt.Sprintf("%s\n", statInfos.CallId) + insLog += fmt.Sprintf("seqId:%s\n", seqId) + // insLog += fmt.Sprintf("%s\n", statInfos.SeqId) + insLog += fmt.Sprintf("LogTime:%s, ", statInfos.LogTime) + insLog += fmt.Sprintf("LogType:%s, ", statInfos.LogType) + insLog += fmt.Sprintf("Sid:%s, ", statInfos.Sid) + insLog += fmt.Sprintf("ResultCode:%s, ", statInfos.ResultCode) + insLog += fmt.Sprintf("ReqTime:%s, ", statInfos.ReqTime) + insLog += fmt.Sprintf("RspTime:%s, ", statInfos.RspTime) + insLog += fmt.Sprintf("ClientIp:%s, ", statInfos.ClientIp) + insLog += fmt.Sprintf("DevInfo:%s, ", statInfos.DevInfo) + insLog += fmt.Sprintf("OsInfo:%s, ", statInfos.OsInfo) + insLog += fmt.Sprintf("NwInfo:%s, ", statInfos.NwInfo) + insLog += fmt.Sprintf("SvcName:%s, ", statInfos.SvcName) + insLog += fmt.Sprintf("DevModel:%s, ", statInfos.DevModel) + insLog += fmt.Sprintf("CarrierType:%s, ", statInfos.CarrierType) + insLog += fmt.Sprintf("HostName:%s, ", statInfos.HostName) + insLog += fmt.Sprintf("ScnName:%s, ", statInfos.ScnName) + insLog += fmt.Sprintf("CallId:%s, ", statInfos.CallId) + insLog += fmt.Sprintf("TrId:%s, ", statInfos.TrId) + insLog += fmt.Sprintf("ConcCall:%s, ", statInfos.ConcCall) + insLog += fmt.Sprintf("SvcType:%s, ", statInfos.SvcType) + insLog += fmt.Sprintf("SvcReqTime:%s, ", statInfos.SvcReqTime) + insLog += fmt.Sprintf("SvcRspTime:%s, ", statInfos.SvcRspTime) + insLog += fmt.Sprintf("TransferNo:%s, ", statInfos.TransferNo) + insLog += fmt.Sprintf("CallTime:%s, ", statInfos.CallTime) + insLog += fmt.Sprintf("CallType:%s, ", statInfos.CallType) + insLog += fmt.Sprintf("FunName:%s, ", statInfos.FunName) + insLog += fmt.Sprintf("ResultMsg:%s, ", statInfos.ResultMsg) + insLog += fmt.Sprintf("SttText:%s, ", statInfos.SttText) + insLog += fmt.Sprintf("TtsText:%s", statInfos.TtsText) l.Printf(icslog.LOG_LEVEL_INFO, -1, "%s", insLog) fmt.Printf("stats- %s \n", statInfos.SeqId) @@ -166,15 +182,29 @@ func BotCommand(t *icsnet.IcsTCPNet, bufend string) { fmt.Printf("stats- %s \n", statInfos.SvcType) fmt.Printf("stats- %s \n", statInfos.SvcReqTime) fmt.Printf("stats- %s \n", statInfos.SvcRspTime) + fmt.Printf("stats- %s \n", statInfos.TransferNo) + fmt.Printf("stats- %s \n", statInfos.CallTime) + fmt.Printf("stats- %s \n", statInfos.CallType) + fmt.Printf("stats- %s \n", statInfos.FunName) fmt.Printf("stats- %s \n", statInfos.ResultMsg) fmt.Printf("stats- %s \n", statInfos.SttText) fmt.Printf("stats- %s \n", statInfos.TtsText) // l.Printf(icslog.LOG_LEVEL_INFO, -1, "Recved Stat Command(%s) %d", ttsHeader, rlen) + count++ + // t.Close() } } } -func (statInfos *StatInfos) ChangeByteToString(statInfo []byte) { +func (statInfos *StatInfos) ChangeByteToString(statInfo []byte) *icserror.IcsError { + // l := icslog.GetIcsLog() + + // defer func() { + // l.Printf(icslog.LOG_LEVEL_WARN, -1, "%s \n%s", + // icserror.ICSERRNETNotConnectError.GetMessage(), debug.Stack()) + // return + // }() + // n := bytes.Index(statInfo[STAT_INFO:SEQ_ID], []byte{0}) statInfos.SeqId = string(statInfo[STAT_INFO:SEQ_ID]) // fmt.Println("seqid ", statInfo[STAT_INFO : SEQ_ID]) @@ -244,8 +274,20 @@ func (statInfos *StatInfos) ChangeByteToString(statInfo []byte) { // n = bytes.Index(statInfo[SVC_REQ_TIME:SVC_RSP_TIME], []byte{0}) statInfos.SvcRspTime = string(statInfo[SVC_REQ_TIME:SVC_RSP_TIME]) + // n = bytes.Index(statInfo[SVC_REQ_TIME:SVC_RSP_TIME], []byte{0}) + statInfos.TransferNo = string(statInfo[SVC_RSP_TIME:TRANSFER_NO]) + + // n = bytes.Index(statInfo[SVC_REQ_TIME:SVC_RSP_TIME], []byte{0}) + statInfos.CallTime = string(statInfo[TRANSFER_NO:CALL_TIME]) + + // n = bytes.Index(statInfo[SVC_REQ_TIME:SVC_RSP_TIME], []byte{0}) + statInfos.CallType = string(statInfo[CALL_TIME:CALL_TYPE]) + + // n = bytes.Index(statInfo[SVC_REQ_TIME:SVC_RSP_TIME], []byte{0}) + statInfos.FunName = string(statInfo[CALL_TYPE:FUN_NAME]) + // n = bytes.Index(statInfo[SVC_RSP_TIME:RESULT_MSG], []byte{0}) - statInfos.ResultMsg = string(statInfo[SVC_RSP_TIME:RESULT_MSG]) + statInfos.ResultMsg = string(statInfo[FUN_NAME:RESULT_MSG]) // n = bytes.Index(statInfo[RESULT_MSG:STT_TEXT], []byte{0}) statInfos.SttText = string(statInfo[RESULT_MSG:STT_TEXT]) @@ -253,4 +295,5 @@ func (statInfos *StatInfos) ChangeByteToString(statInfo []byte) { // n = bytes.Index(statInfo[STT_TEXT:TTS_TEXT], []byte{0}) statInfos.TtsText = string(statInfo[STT_TEXT:]) + return nil }