lumberjack icon indicating copy to clipboard operation
lumberjack copied to clipboard

Implemented SyncWriter interface

Open piyongcai opened this issue 1 year ago • 4 comments

Implemented SyncWriter interface.

In some scenarios, we need to use the SyncWriter interface, such as integrating lumberjack and go.uber.org/zap.

piyongcai avatar Mar 15 '23 09:03 piyongcai

@elithrar Please check and merge!!

piyongcai avatar Mar 16 '23 07:03 piyongcai

Please don't ping me. I don't have any relationship to this package.

elithrar avatar Mar 16 '23 10:03 elithrar

@piyongcai you can use zapcore.AddSync to wrap lumberjack.Logger :

// lumberjack.Logger is already safe for concurrent use, so we don't need to
// lock it.
w := zapcore.AddSync(&lumberjack.Logger{
  Filename:   "/var/log/myapp/foo.log",
  MaxSize:    500, // megabytes
  MaxBackups: 3,
  MaxAge:     28, // days
})
core := zapcore.NewCore(
  zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()),
  w,
  zap.InfoLevel,
)
logger := zap.New(core)

logger.Info("Hello, world!")

liuzengh avatar Jan 31 '24 07:01 liuzengh

@liuzengh but zapcore.AddSync returns a fake SyncWriter, right? It doesn't call file.Sync()

remones avatar Jul 28 '24 19:07 remones