yanghui
2021-04-27 af04d69d231872447e0358aed8f848cf5bc1f93a
logc.go
@@ -48,20 +48,24 @@
var (
   opChan chan *OperationLog
   schedualeChan chan *ScheduleLog
   logger *Log
   ProcName string
   ProcID string
)
func Init(flogWriter LogReportCallback, log *Log, procId string, procName string, wg *sync.WaitGroup, done  chan struct{}) bool {
   opChan = make(chan *OperationLog, 100)
   schedualeChan = make(chan *ScheduleLog)
   if nil != log {
      logger = log
   } else {
      logger = &Log{}
   }
   //ProcName = procName
   //ProcID = procId
   ProcName = procName
   ProcID = procId
   go saveLoop(flogWriter, wg, done)
@@ -72,6 +76,9 @@
   if nil == log {
      return
   }
   log.ProcName = ProcName
   log.ProcID = ProcID
   select {
   case opChan <- log:
@@ -86,9 +93,35 @@
   }
}
func SaveScheduleLog(category, level int, timeout time.Duration, msg string) {
func SaveScheduleLog(category, level int, timeout time.Duration, v ...interface{}) {
   msg := ""
   if len(v) > 0 {
      msg = fmt.Sprint(v...)
   }
   if msg == "" {
      retrun
   }
   log := &ScheduleLog{
      Timestamp: time.Now().Unix(),
      ProcName:  ProcName,
      ProcID:    ProcID,
      Level:     level,
      Type:      category,
      Info:      msg,
   }
   select {
   case schedualeChan <- log:
      return
   case <-time.After(timeout):
      var info string
      b, err := json.Marshal(log)
      if nil == err {
         info = string(b)
      }
      logger.Fatal("SaveScheduleLog failed to save log", info)
   }
}