package main import ( "fmt" "os" "strings" "time" "gitlab.com/ics_cinnamon/voiceStatistics/icsconf" "gitlab.com/ics_cinnamon/voiceStatistics/icserror" "gitlab.com/ics_cinnamon/voiceStatistics/icslog" "gitlab.com/ics_cinnamon/voiceStatistics/icsutil" ) func main() { var homeDir string //get Voice Agent home dir isStop := false for _, e := range os.Environ() { s := strings.SplitN(e, "=", 2) if strings.Compare(s[0], "ICSVS_ROOT") == 0 { homeDir = s[1] //service.SetHomeDir(s[1]) isStop = true break } } if !isStop { icserror.ICSERRNotFoundHome.PrintWithCaller(1) return } //configuration configFile := fmt.Sprintf("%s/config/icsvs.xml", homeDir) //configFile := fmt.Sprintf("%s/config/icsvc.xml", service.GetHomeDir()) //fmt.Println("Config file:", configFile) conf, confErr := icsconf.OpenConfig(configFile, homeDir) if confErr != nil { confErr.PrintWithCaller(0) return } icsLog, lerr := icslog.NewIcsLog( &conf.LogConfig, icslog.GetLogLevelID(conf.LogConfig.Level), icslog.GetLogOutputID(conf.LogConfig.Output), conf.LogConfig.Path, conf.LogConfig.Disklimit, ) for { // log file name change y1, m1, d1 := icsLog.CurrentDate.Date() y2, m2, d2 := time.Now().Date() if d1 != d2 || y1 != y2 || m1 != m2 { icsLog.M.Lock() icsLog.LogFileName = fmt.Sprintf("%s/icsvs.log-%d%02d%02d", icsLog.Path, y2, m2, d2) // file name change var oerr error icsLog.LogFile, oerr = os.OpenFile(icsLog.LogFileName, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if oerr != nil { icserror.ICSERRFileOpen.SetError(oerr) icsLog.M.Unlock() } icsLog.M.Unlock() } if icsutil.CheckPID() { } else { icsLog.Print(icslog.LOG_LEVEL_INFO, -1, "Voice Statistic Death - reloading...") if lerr != nil { lerr.PrintWithCaller(0) } icsLog.Print(icslog.LOG_LEVEL_INFO, -1, "Started Voice Statistic Loader") //deamonize pid, derr := icsutil.Deamonize() if derr != nil { icserror.ICSERRDeamonize.SetError(derr) icsLog.Printf(icslog.LOG_LEVEL_ERROR, -1, "VoiceStatistic: %s", icserror.ICSERRDeamonize.GetError()) os.Exit(0) } icsLog.Printf(icslog.LOG_LEVEL_INFO, -1, "Loaded VoiceStatistic[%d]", pid) } time.Sleep(time.Second * 15) } }