1
0
Fork 0
logger/rotater/wrapped.go

40 lines
900 B
Go
Raw Normal View History

2017-11-06 22:24:08 +09:00
package rotater
import (
"sync"
2017-11-08 01:44:20 +09:00
"amuz.es/src/infra/logger"
2017-11-06 22:24:08 +09:00
)
type LockedWriteSyncer struct {
sync.Mutex
2017-11-08 01:44:20 +09:00
ws logger.WriteSyncer
2017-11-06 22:24:08 +09:00
}
// Lock wraps a WriteSyncer in a mutex to make it safe for concurrent use. In
// particular, *os.Files must be locked before use.
2017-11-08 01:44:20 +09:00
func newLocked(ws logger.WriteSyncer) logger.RotateSyncer {
2017-11-06 22:24:08 +09:00
if lws, ok := ws.(*LockedWriteSyncer); ok {
// no need to layer on another lock
return lws
}
return &LockedWriteSyncer{ws: ws}
}
func (s *LockedWriteSyncer) Write(bs []byte) (int, error) {
s.Lock()
n, err := s.ws.Write(bs)
s.Unlock()
return n, err
}
func (s *LockedWriteSyncer) Sync() error {
s.Lock()
err := s.ws.Sync()
s.Unlock()
return err
}
2017-11-08 01:44:20 +09:00
func (r *LockedWriteSyncer) SetOnClose(closeFunc logger.CloseFunc) {}
2017-11-06 22:24:08 +09:00
func (r *LockedWriteSyncer) Rotate() (err error) { return }
func (r *LockedWriteSyncer) Close() (err error) { return }