| | |
| | | |
| | | var ( |
| | | opChan chan *OperationLog |
| | | |
| | | logger *Log |
| | | ) |
| | | |
| | | |
| | | func Init(flogWriter LogReportCallback, procId string, procName string, wg *sync.WaitGroup, done chan struct{}) bool { |
| | | func Init(flogWriter LogReportCallback, log *Log, procId string, procName string, wg *sync.WaitGroup, done chan struct{}) bool { |
| | | opChan = make(chan *OperationLog, 100) |
| | | if nil != log { |
| | | logger = log |
| | | } else { |
| | | logger = &Log{} |
| | | } |
| | | |
| | | //ProcName = procName |
| | | //ProcID = procId |
| | | |
| | |
| | | return true |
| | | } |
| | | |
| | | func SaveOperationLog(log *OperationLog) { |
| | | if nil != log { |
| | | opChan <- log |
| | | func SaveOperationLog(log *OperationLog, timeout time.Duration) { |
| | | if nil == log { |
| | | return |
| | | } |
| | | |
| | | select { |
| | | case opChan <- log: |
| | | return |
| | | case <-time.After(timeout): |
| | | var info string |
| | | b, err := json.Marshal(log) |
| | | if nil == err { |
| | | info = string(b) |
| | | } |
| | | logger.Fatal("SaveOperationLog failed to save log", info) |
| | | } |
| | | } |
| | | |
| | |
| | | //} |
| | | |
| | | const ( |
| | | LogSaveTopic = "logSaveTopic" |
| | | OperationLogTopic = "operationLogSaveTopic" |
| | | ) |
| | | |
| | | func saveLoop(logCallback LogReportCallback, wg *sync.WaitGroup, done chan struct{}) { |
| | |
| | | |
| | | reg := &LogRegister { |
| | | nodes, |
| | | LogSaveTopic, |
| | | OperationLogTopic, |
| | | payload, |
| | | } |
| | | |