logger: fixup Fatal finalizers
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
@@ -84,7 +84,7 @@ func NewOptions(opts ...Option) Options {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WithFatalFinalizers set logger.Fatal finalizers
|
// WithFatalFinalizers set logger.Fatal finalizers
|
||||||
func WithFatalFinalizers(fncs []func(context.Context)) Option {
|
func WithFatalFinalizers(fncs ...func(context.Context)) Option {
|
||||||
return func(o *Options) {
|
return func(o *Options) {
|
||||||
o.FatalFinalizers = fncs
|
o.FatalFinalizers = fncs
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -229,12 +229,12 @@ func (s *slogLogger) Error(ctx context.Context, msg string, attrs ...interface{}
|
|||||||
|
|
||||||
func (s *slogLogger) Fatal(ctx context.Context, msg string, attrs ...interface{}) {
|
func (s *slogLogger) Fatal(ctx context.Context, msg string, attrs ...interface{}) {
|
||||||
s.printLog(ctx, logger.FatalLevel, msg, attrs...)
|
s.printLog(ctx, logger.FatalLevel, msg, attrs...)
|
||||||
if closer, ok := s.opts.Out.(io.Closer); ok {
|
|
||||||
closer.Close()
|
|
||||||
}
|
|
||||||
for _, fn := range s.opts.FatalFinalizers {
|
for _, fn := range s.opts.FatalFinalizers {
|
||||||
fn(ctx)
|
fn(ctx)
|
||||||
}
|
}
|
||||||
|
if closer, ok := s.opts.Out.(io.Closer); ok {
|
||||||
|
closer.Close()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Warn(ctx context.Context, msg string, attrs ...interface{}) {
|
func (s *slogLogger) Warn(ctx context.Context, msg string, attrs ...interface{}) {
|
||||||
|
|||||||
@@ -469,3 +469,25 @@ func Test_WithContextAttrFunc(t *testing.T) {
|
|||||||
|
|
||||||
// t.Logf("xxx %s", buf.Bytes())
|
// t.Logf("xxx %s", buf.Bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFatalFinalizers(t *testing.T) {
|
||||||
|
ctx := context.TODO()
|
||||||
|
buf := bytes.NewBuffer(nil)
|
||||||
|
l := NewLogger(
|
||||||
|
logger.WithLevel(logger.TraceLevel),
|
||||||
|
logger.WithOutput(buf),
|
||||||
|
)
|
||||||
|
if err := l.Init(
|
||||||
|
logger.WithFatalFinalizers(func(ctx context.Context) {
|
||||||
|
l.Info(ctx, "fatal finalizer")
|
||||||
|
})); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
l.Fatal(ctx, "info_msg1")
|
||||||
|
if !bytes.Contains(buf.Bytes(), []byte("fatal finalizer")) {
|
||||||
|
t.Fatalf("logger dont have fatal message, buf %s", buf.Bytes())
|
||||||
|
}
|
||||||
|
if !bytes.Contains(buf.Bytes(), []byte("info_msg1")) {
|
||||||
|
t.Fatalf("logger dont have info_msg1 message, buf %s", buf.Bytes())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user