diff --git a/HISTORY.md b/HISTORY.md index f277a39..d4874bf 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,11 @@ ## ✒ 历史版本的特性介绍 (Features in old versions) +### v1.5.7-alpha + +> 此版本发布于 2023-12-22 + +* 增加包级别的 Sync 和 Close 函数 + ### v1.5.6-alpha > 此版本发布于 2023-12-21 diff --git a/default.go b/default.go index 305aa40..373c7f1 100644 --- a/default.go +++ b/default.go @@ -78,3 +78,13 @@ func Println(args ...interface{}) { msg := fmt.Sprintln(args...) Default().log(defaults.LevelPrint, msg) } + +// Sync syncs the default logger and returns an error if failed. +func Sync() error { + return Default().Sync() +} + +// Close closes the default logger and returns an error if failed. +func Close() error { + return Default().Close() +} diff --git a/default_test.go b/default_test.go index 686c1f4..86b3dac 100644 --- a/default_test.go +++ b/default_test.go @@ -88,3 +88,48 @@ func TestDefaultLogger(t *testing.T) { t.Fatalf("got %s != want %s", got, want) } } + +// go test -v -cover -count=1 -test.cpu=1 -run=^TestDefaultLoggerSync$ +func TestDefaultLoggerSync(t *testing.T) { + syncer := &testSyncer{ + synced: false, + } + + logger := &Logger{ + syncer: syncer, + } + + SetDefault(logger) + Sync() + + if !syncer.synced { + t.Fatal("syncer.synced is wrong") + } +} + +// go test -v -cover -count=1 -test.cpu=1 -run=^TestDefaultLoggerClose$ +func TestDefaultLoggerClose(t *testing.T) { + syncer := &testSyncer{ + synced: false, + } + + closer := &testCloser{ + closed: false, + } + + logger := &Logger{ + syncer: syncer, + closer: closer, + } + + SetDefault(logger) + Close() + + if !syncer.synced { + t.Fatal("syncer.synced is wrong") + } + + if !closer.closed { + t.Fatal("closer.closed is wrong") + } +} diff --git a/doc.go b/doc.go index f5ba28f..3c2a68e 100644 --- a/doc.go +++ b/doc.go @@ -317,5 +317,5 @@ package logit // import "github.com/FishGoddess/logit" const ( // Version is the version string representation of logit. - Version = "v1.5.6-alpha" + Version = "v1.5.7-alpha" ) diff --git a/logger_test.go b/logger_test.go index 5dbc346..31117f1 100644 --- a/logger_test.go +++ b/logger_test.go @@ -30,6 +30,24 @@ type testLoggerHandler struct { opts slog.HandlerOptions } +type testSyncer struct { + synced bool +} + +func (ts *testSyncer) Sync() error { + ts.synced = true + return nil +} + +type testCloser struct { + closed bool +} + +func (tc *testCloser) Close() error { + tc.closed = true + return nil +} + // go test -v -cover -count=1 -test.cpu=1 -run=^TestNewLogger$ func TestNewLogger(t *testing.T) { handlerName := t.Name() @@ -219,3 +237,46 @@ func TestLogger(t *testing.T) { t.Fatalf("got %s != want %s", got, want) } } + +// go test -v -cover -count=1 -test.cpu=1 -run=^TestLoggerSync$ +func TestLoggerSync(t *testing.T) { + syncer := &testSyncer{ + synced: false, + } + + logger := &Logger{ + syncer: syncer, + } + + logger.Sync() + + if !syncer.synced { + t.Fatal("syncer.synced is wrong") + } +} + +// go test -v -cover -count=1 -test.cpu=1 -run=^TestLoggerClose$ +func TestLoggerClose(t *testing.T) { + syncer := &testSyncer{ + synced: false, + } + + closer := &testCloser{ + closed: false, + } + + logger := &Logger{ + syncer: syncer, + closer: closer, + } + + logger.Close() + + if !syncer.synced { + t.Fatal("syncer.synced is wrong") + } + + if !closer.closed { + t.Fatal("closer.closed is wrong") + } +}