func parseConfig() *goconfig.ConfigFile { baseDir, err := util.GetDir() if err != nil { log.Fatalln("basedir get error: " + err.Error()) } configFile := baseDir + CONFIG_FILE conf, err := goconfig.ReadConfigFile(configFile) if err != nil { log.Fatalln("ReadConfigFile Err: ", err.Error(), "\nConfigFile:", configFile) } mon = new(monitor) mon.items = make([]MonitorItem, 0) mondir, err := conf.GetString("common", "monDir") mon.dirs = strings.Split(mondir, ",") mon.wps, _ = conf.GetInt("common", "wps") if mon.wps == 0 { mon.wps = DEF_WPS } mon.debug, _ = conf.GetBool("log", "debug") mon.mail = &mailConf{} mon.mail.host, _ = conf.GetString("mail", "mailHost") mon.mail.user, _ = conf.GetString("mail", "mailUser") mon.mail.pass, _ = conf.GetString("mail", "mailPass") mon.mail.from, _ = conf.GetString("mail", "mailFrom") mon.mail.to, _ = conf.GetString("mail", "mailTo") mon.mail.title, _ = conf.GetString("mail", "mailTitle") mon.mail.serverInfo, _ = conf.GetString("mail", "serverInfo") return conf }
func main() { var conFile string = "queue.conf" var i int64 // init config c, err := goconfig.ReadConfigFile(conFile) if err != nil { log.Fatalln(err.Error()) } // init log logFile, err := c.GetString("log", "logFile") if err != nil { log.Fatalln(err.Error()) } w, err := os.OpenFile(logFile, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0666) defer w.Close() if err != nil { log.Fatalln(err.Error()) } logger = log.New(w, "", log.Ldate|log.Ltime|log.Llongfile) gnum, err := c.GetInt64("common", "rutineNum") errHandle(err) ch := make(chan int64, gnum) runtime.GOMAXPROCS(int(gnum)) for i = 0; i < gnum; i++ { go queue(i, c, ch) } // trap signal sch := make(chan os.Signal, 10) signal.Notify(sch, syscall.SIGTERM, syscall.SIGKILL, syscall.SIGINT, syscall.SIGHUP, syscall.SIGSTOP, syscall.SIGQUIT) go func(ch <-chan os.Signal) { sig := <-ch log.Print("signal recieved " + sig.String()) if sig == syscall.SIGHUP { log.Println("queue restart now...") } shutdown = true }(sch) // wait channel for i = 0; i < gnum; i++ { <-ch } }
// 解析配置文件 func (c *ACST) parseConfig(configFile string) { conf, err := goconfig.ReadConfigFile(configFile) if err != nil { log.Fatalln("ReadConfigFile Err: ", err.Error(), "\nConfigFile:", configFile) } c.Config = make(map[string]string) var field, value string for _, field = range configField { value, err = conf.GetString("default", field) if err != nil { log.Fatalln("baby, your config is error: ", err.Error()) } c.Config[field] = value } // 处理相对路径问题 for _, field = range [3]string{"checkoutDir", "commitDir", "logFile"} { if c.Config[field][0] != '/' { c.Config[field] = c.Pwd + "/" + c.Config[field] } } }