github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/log/handler_go14.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 19:16:39</date> 10 //</624450097807101952> 11 12 //+构建GO1.4 13 14 package log 15 16 import "sync/atomic" 17 18 //swaphandler包装了另一个可以换出的处理程序 19 //在运行时以线程安全的方式动态运行。 20 type swapHandler struct { 21 handler atomic.Value 22 } 23 24 func (h *swapHandler) Log(r *Record) error { 25 return (*h.handler.Load().(*Handler)).Log(r) 26 } 27 28 func (h *swapHandler) Swap(newHandler Handler) { 29 h.handler.Store(&newHandler) 30 } 31 32 func (h *swapHandler) Get() Handler { 33 return *h.handler.Load().(*Handler) 34 } 35