github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/log/context/log_id.go (about) 1 package context 2 3 import ( 4 "runtime" 5 "sync" 6 ) 7 8 var ( 9 logIDs = map[int64]string{} 10 locker = sync.RWMutex{} 11 ) 12 13 func getGoID() int64 { 14 return runtime.GoID() 15 } 16 17 func SetLogID(id string) { 18 locker.Lock() 19 defer locker.Unlock() 20 21 logIDs[getGoID()] = id 22 } 23 24 func GetLogID() string { 25 locker.RLock() 26 defer locker.RUnlock() 27 28 goID := getGoID() 29 30 if logID, ok := logIDs[goID]; ok { 31 return logID 32 } 33 34 return "" 35 } 36 37 func Close() { 38 locker.Lock() 39 defer locker.Unlock() 40 41 goID := getGoID() 42 43 if _, ok := logIDs[goID]; ok { 44 delete(logIDs, goID) 45 } 46 }