本文整理匯總了Golang中github.com/ngaut/logging.Warning函數的典型用法代碼示例。如果您正苦於以下問題:Golang Warning函數的具體用法?Golang Warning怎麽用?Golang Warning使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了Warning函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: apiSlotRangeSet
func apiSlotRangeSet(task RangeSetTask) (int, string) {
conn := CreateZkConn()
defer conn.Close()
lock := utils.GetZkLock(conn, globalEnv.ProductName())
lock.Lock(fmt.Sprintf("set slot range, %+v", task))
defer func() {
err := lock.Unlock()
if err != nil {
log.Warning(err)
}
}()
// default set online
if len(task.Status) == 0 {
task.Status = string(models.SLOT_STATUS_ONLINE)
}
err := models.SetSlotRange(conn, globalEnv.ProductName(), task.FromSlot, task.ToSlot, task.NewGroupId, models.SlotStatus(task.Status))
if err != nil {
log.Warning(err)
return 500, err.Error()
}
return jsonRetSucc()
}
示例2: SaveConfigToFile
func (ps *ProxyServer) SaveConfigToFile() {
ticker := time.NewTicker(3600 * time.Second)
for {
select {
case <-ticker.C:
newaddr := ps.Backend.GetAddrs()
oldaddr := ps.Conf.Nodes
if (len(newaddr) != len(oldaddr)) && (len(newaddr) != 0) {
ps.Conf.Nodes = newaddr
// persistent nodes info
nodes := strings.Join(newaddr, ",")
log.Warning("addr changed to ", nodes)
ps.Conf.Config.Set("proxy::nodes", nodes)
err := ps.Conf.Config.SaveConfigFile(ps.Conf.FileName)
if err != nil {
log.Warning("persistent config failed ", err)
}
}
case <-ps.Quit:
goto quit
}
}
quit:
log.Warning("quit SaveConfigToFile...")
}
示例3: apiPromoteServer
func apiPromoteServer(server models.Server, param martini.Params) (int, string) {
conn := CreateZkConn()
defer conn.Close()
lock := utils.GetZkLock(conn, globalEnv.ProductName())
lock.Lock(fmt.Sprintf("promote server %+v", server))
defer func() {
err := lock.Unlock()
if err != nil {
log.Warning(err)
}
}()
group, err := models.GetGroup(conn, globalEnv.ProductName(), server.GroupId)
if err != nil {
log.Warning(err)
return 500, err.Error()
}
err = group.Promote(conn, server.Addr)
if err != nil {
log.Warning(errors.ErrorStack(err))
log.Warning(err)
return 500, err.Error()
}
return jsonRetSucc()
}
示例4: HandleStatusSuccess
// we will check output file, if content contain msg_filter, we will change status to Failed
func (agent *Agent) HandleStatusSuccess(s *TaskStatus) {
agent.Lock.Lock()
defer agent.Lock.Unlock()
if !util.HitFilter(s.TaskPtr.LogFilename, s.TaskPtr.Job.MsgFilter) {
s.TaskPtr.Job.LastSuccessAt = s.CreateAt
s.TaskPtr.Job.LastTaskId = s.TaskPtr.TaskId
if agent.Running[s.TaskPtr.JobId].Status == StatusTimeout {
s.TaskPtr.Job.LastStatus = JobTimeout
} else {
s.TaskPtr.Job.LastStatus = JobSuccess
}
delete(agent.Process, s.TaskPtr.TaskId)
delete(agent.Running, s.TaskPtr.JobId)
s.TaskPtr.Job.SuccessCnt += 1
log.Warning("Task success : ", s.TaskPtr.TaskId, s.TaskPtr.Job.Name, s.TaskPtr.ExecDuration)
} else {
s.TaskPtr.Job.LastErrAt = s.CreateAt
s.TaskPtr.Job.LastTaskId = s.TaskPtr.TaskId
s.TaskPtr.Job.LastStatus = JobFail
s.Status = StatusFailed
delete(agent.Process, s.TaskPtr.TaskId)
delete(agent.Running, s.TaskPtr.JobId)
s.TaskPtr.Job.ErrCnt += 1
log.Warningf("Task failed : hit msg_filter error", s.TaskPtr.TaskId, s.TaskPtr.Job.Name, s.TaskPtr.ExecDuration)
s.Err = errors.New(fmt.Sprintf("Task: %s Job: %s failed. hit msg_filter error", s.TaskPtr.TaskId, s.TaskPtr.Job.Name))
}
s.Message = util.GetFileContent(s.TaskPtr.LogFilename, 65535, 1)
if ok := agent.store.UpdateTaskStatus(s); !ok {
log.Warning("Task status Store Or Update failed ", s)
}
agent.PostTaskStatus(s)
}
示例5: WritingLoop
func (s *session) WritingLoop() {
s.lastUnsentResponseSeq = 1
for {
select {
case resp, ok := <-s.backQ:
if !ok {
s.Close()
s.closeSignal.Done()
return
}
flush, err := s.handleResponse(resp)
if err != nil {
log.Warning(s.RemoteAddr(), resp.ctx, errors.ErrorStack(err))
s.Close() //notify reader to exit
continue
}
if flush && len(s.backQ) == 0 {
err := s.w.Flush()
if err != nil {
s.Close() //notify reader to exit
log.Warning(s.RemoteAddr(), resp.ctx, errors.ErrorStack(err))
continue
}
}
}
}
}
示例6: GetFileContent
// direction 0 head, 1 tail
// we only return retain-size string to Caller
func GetFileContent(filename string, retain int64, direction int) string {
log.Debugf("GetFileContent ", filename, retain)
f, err := os.Open(filename)
if err != nil {
log.Warning("GetOutPut open failed ", filename, err)
return ""
}
defer f.Close()
fs, err := f.Stat()
if err != nil {
log.Warning("GetOutPut get Stat failed ", filename, err)
return ""
}
var buf []byte
seek_at := int64(0)
if fs.Size() > retain && direction == 1 {
seek_at = fs.Size() - retain
buf = make([]byte, retain)
}
buf = make([]byte, fs.Size())
f.Seek(seek_at, 0)
if _, err := f.Read(buf); err != nil && err != io.EOF {
log.Warning("GetOutPut read buf failed ", err)
return ""
}
return string(buf)
}
示例7: run
func (self *taskNotify) run() {
for msg := range self.ch {
//call webhook
log.Debug("Send Notify for Job", msg.job, msg.task)
if len(msg.job.WebHookUrl) == 0 {
continue
}
buf, err := json.Marshal(struct {
Job *scheduler.Job `json:"job"`
Task *scheduler.Task `json:"task"`
}{msg.job, msg.task})
if err != nil {
log.Warning(err.Error(), msg.job, msg.task)
}
body := bytes.NewBuffer(buf)
_, err = http.Post(msg.job.WebHookUrl, "application/json", body)
if err != nil {
log.Warning(err.Error(), msg.job, msg.task)
}
if msg.isLast { //no more message
return
}
}
}
示例8: SaveCronMetaData
// we will Save Cron MetaData periodically, currently for 5min
func (agent *Agent) SaveCronMetaData() {
meta_file := fmt.Sprintf("%s/dcms_agent.metadata", agent.Conf.WorkDir)
cronSlice := make([]string, 0)
agent.Lock.Lock()
defer agent.Lock.Unlock()
for k, v := range agent.Jobs {
if data, err := json.Marshal(v); err == nil {
cronSlice = append(cronSlice, string(data))
} else {
log.Warningf("marshal task: %d failed: %s", k, err)
return
}
}
if data, err := json.Marshal(cronSlice); err != nil {
log.Warning("json marshal cronslice failed, ", err)
} else {
if len(cronSlice) == 0 {
log.Warning("cronSlice json empty, just skip write MetaData")
return
}
log.Debug("len of cronSlice:", len(data), data)
log.Debugf("cronSlice length:%d content:%s", len(cronSlice), cronSlice)
if e := ioutil.WriteFile(meta_file, data, os.ModePerm); e != nil {
log.Warning("ioutil write meta_file failed,", e)
}
}
}
示例9: HandleStatusLoop
// process task status
// todo: send msg to queue
func (agent *Agent) HandleStatusLoop() {
defer func() {
if e := recover(); e != nil {
log.Warning("HandleStatusLoop fatal, we will reboot this goroutine", e)
go agent.HandleStatusLoop()
}
}()
for {
select {
case s := <-agent.JobStatusChan:
s.TaskPtr.ExecDuration = s.CreateAt - s.TaskPtr.ExecAt
if s.Err == nil {
s.Err = errors.New("")
}
if s.Status == StatusRunning && s.Command != nil {
agent.HandleStatusRunning(s)
} else if s.Status == StatusSuccess && s.Command != nil {
agent.HandleStatusSuccess(s)
} else if s.Status == StatusTimeout {
agent.HandleStatusTimeout(s)
} else if s.Status == StatusKilled {
agent.HandleStatusKilled(s)
} else {
agent.HandleStatusFailed(s)
}
case <-agent.StatusLoopQuitChan:
goto quit
}
}
quit:
log.Warning("receive StatusLoopQuitChan chan, quit HandleStatusLoop")
}
示例10: apiAddServerGroup
// create new server group
func apiAddServerGroup(newGroup models.ServerGroup) (int, string) {
conn := CreateZkConn()
defer conn.Close()
lock := utils.GetZkLock(conn, productName)
lock.Lock(fmt.Sprintf("add group %+v", newGroup))
defer func() {
err := lock.Unlock()
if err != nil {
log.Warning(err)
}
}()
newGroup.ProductName = productName
exists, err := newGroup.Exists(conn)
if err != nil {
log.Warning(err)
return 500, err.Error()
}
if exists {
return jsonRet(map[string]interface{}{
"ret": 0,
"msg": "group already exists",
})
}
err = newGroup.Create(conn)
if err != nil {
log.Warning(err)
return 500, err.Error()
}
return jsonRetSucc()
}
示例11: apiAddServerToGroup
// add redis server to exist server group
func apiAddServerToGroup(server models.Server, param martini.Params) (int, string) {
groupId, _ := strconv.Atoi(param["id"])
lock := utils.GetZkLock(safeZkConn, globalEnv.ProductName())
lock.Lock(fmt.Sprintf("add server to group, %+v", server))
defer func() {
err := lock.Unlock()
if err != nil {
log.Warning(err)
}
}()
// check group exists first
serverGroup := models.NewServerGroup(globalEnv.ProductName(), groupId)
exists, err := serverGroup.Exists(safeZkConn)
if err != nil {
log.Warning(err)
return 500, err.Error()
}
// create new group if not exists
if !exists {
if err := serverGroup.Create(safeZkConn); err != nil {
return 500, err.Error()
}
}
if err := serverGroup.AddServer(safeZkConn, &server); err != nil {
log.Warning(errors.ErrorStack(err))
return 500, err.Error()
}
return jsonRetSucc()
}
示例12: Clean
func (agent *Agent) Clean() {
// we will wait for all TASK FINISHED
// but after quit_time, we will KILL subprocess by SIGUSR1
start_quit := time.Now().Unix()
for l := len(agent.Process); l > 0; {
log.Warning("process still running, we should quit after all TASK FINISHED, please wait")
log.Warning("running task is:")
for task, _ := range agent.Process {
log.Warningf("%s ", task)
}
time.Sleep(5 * time.Second)
l = len(agent.Process)
if now := time.Now().Unix(); now-start_quit > agent.Conf.QuitTime {
log.Warning("quit_time timeout, we will kill subprocess by SIGUSR1")
for task_id, p := range agent.Process {
if err := p.Signal(syscall.SIGUSR1); err != nil {
log.Warningf("SIGUSR1 task:%s failed...", task_id)
}
log.Warningf("SIGUSR1 task:%s OK...wait subprocess quit", task_id)
}
goto quit
}
}
quit:
time.Sleep(2 * time.Second)
close(agent.StatusLoopQuitChan)
log.Warning("all process DONE, we quit success.")
}
示例13: apiAddServerGroup
// create new server group
func apiAddServerGroup(newGroup models.ServerGroup) (int, string) {
lock := utils.GetZkLock(safeZkConn, globalEnv.ProductName())
lock.Lock(fmt.Sprintf("add group %+v", newGroup))
defer func() {
err := lock.Unlock()
if err != nil {
log.Warning(err)
}
}()
newGroup.ProductName = globalEnv.ProductName()
exists, err := newGroup.Exists(safeZkConn)
if err != nil {
log.Warning(err)
return 500, err.Error()
}
if exists {
return 500, "group already exists"
}
err = newGroup.Create(safeZkConn)
if err != nil {
log.Warning(err)
return 500, err.Error()
}
return jsonRetSucc()
}
示例14: apiAddServerToGroup
// add redis server to exist server group
func apiAddServerToGroup(server models.Server, param martini.Params) (int, string) {
groupId, _ := strconv.Atoi(param["id"])
conn := CreateZkConn()
defer conn.Close()
lock := utils.GetZkLock(conn, productName)
lock.Lock(fmt.Sprintf("add server to group, %+v", server))
defer func() {
err := lock.Unlock()
if err != nil {
log.Warning(err)
}
}()
// check group exists first
serverGroup := models.NewServerGroup(productName, groupId)
exists, err := serverGroup.Exists(conn)
if err != nil {
log.Warning(err)
return 500, err.Error()
}
if !exists {
return jsonRetFail(-1, "group not exists")
}
if err := serverGroup.AddServer(conn, &server); err != nil {
log.Warning(err)
return 500, err.Error()
}
return jsonRetSucc()
}
示例15: genLogFile
func (t *Task) genLogFile() {
defer func() {
if e := recover(); e != nil {
log.Warning("genLogFile fatal:", e)
}
}()
d := time.Now().Format("20060102")
filename := fmt.Sprintf("%s/DCMS-%s/%d-%s-%s.log",
t.Job.Dcms.Conf.WorkDir,
d,
t.Job.Id,
t.Job.Name,
t.TaskId)
log.Info("generate logfile :", filename)
logdir := fmt.Sprintf("%s/DCMS-%s", t.Job.Dcms.Conf.WorkDir, d)
if err := os.MkdirAll(logdir, os.ModePerm); err != nil {
log.Warningf("in run exec goroutine, mkdir workdir %s failed!!!! ", t.Job.Dcms.Conf.WorkDir)
}
if f, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, os.ModePerm); err != nil {
log.Warning("in genLogFile os.OpenFile create failed: ", f)
t.logfile = nil
t.LogFilename = ""
} else {
t.logfile = f
t.LogFilename = filename
}
}