diff --git a/io/reader_writer.go b/io/reader_writer.go index c35dcd2..ee920df 100644 --- a/io/reader_writer.go +++ b/io/reader_writer.go @@ -5,21 +5,21 @@ import ( "context" ) -type wrappedIO struct { +type WrappedIO struct { stdin io.Reader stdout io.Writer closer context.CancelFunc } -func (wio *wrappedIO) Read(p []byte) (n int, err error) { +func (wio *WrappedIO) Read(p []byte) (n int, err error) { return wio.stdin.Read(p) } -func (wio *wrappedIO) Write(p []byte) (n int, err error) { +func (wio *WrappedIO) Write(p []byte) (n int, err error) { return wio.stdout.Write(p) } -func (wio *wrappedIO) Close() (err error) { +func (wio *WrappedIO) Close() (err error) { wio.closer() return io.EOF } diff --git a/logger/rotater/wrapped.go b/logger/rotater/wrapped.go index 0ae175e..1be39fc 100644 --- a/logger/rotater/wrapped.go +++ b/logger/rotater/wrapped.go @@ -12,7 +12,7 @@ type LockedWriteSyncer struct { // Lock wraps a WriteSyncer in a mutex to make it safe for concurrent use. In // particular, *os.Files must be locked before use. -func newLocked(ws logger.WriteSyncer) logger.RotateSyncer { +func NewLocked(ws logger.WriteSyncer) logger.RotateSyncer { if lws, ok := ws.(*LockedWriteSyncer); ok { // no need to layer on another lock return lws diff --git a/logger/rotater/writeRotater.go b/logger/rotater/writeRotater.go index 9826c03..d49d37c 100644 --- a/logger/rotater/writeRotater.go +++ b/logger/rotater/writeRotater.go @@ -11,7 +11,7 @@ type rotateSyncer struct { lumberjack.Logger } -func newRotater(filename string, maxSize, maxBackup, maxDay int) logger.RotateSyncer { +func NewRotater(filename string, maxSize, maxBackup, maxDay int) logger.RotateSyncer { return &rotateSyncer{ setOnceOnclose: &sync.Once{}, Logger: lumberjack.Logger{