From 2dc5ce50c0ad2b64c86fed54928d5d0655319ce3 Mon Sep 17 00:00:00 2001 From: ElecTwix <51170038+ElecTwix@users.noreply.github.com> Date: Fri, 12 May 2023 13:56:48 +0300 Subject: [PATCH 1/5] Logger added. --- pkg/gorilla/gorilla.go | 15 +++++++++++++-- pkg/logger/logger.go | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 pkg/logger/logger.go diff --git a/pkg/gorilla/gorilla.go b/pkg/gorilla/gorilla.go index cd231eb..b646dfb 100644 --- a/pkg/gorilla/gorilla.go +++ b/pkg/gorilla/gorilla.go @@ -9,6 +9,7 @@ import ( gorilla "github.com/gorilla/websocket" "github.com/surrealdb/surrealdb.go/internal/rpc" + "github.com/surrealdb/surrealdb.go/pkg/logger" "github.com/surrealdb/surrealdb.go/pkg/rand" "github.com/surrealdb/surrealdb.go/pkg/websocket" ) @@ -29,6 +30,7 @@ type WebSocket struct { connLock sync.Mutex Timeout time.Duration Option []Option + logger *logger.LogData responseChannels map[string]chan rpc.RPCResponse responseChannelsLock sync.RWMutex @@ -74,6 +76,15 @@ func (ws *WebSocket) SetTimeOut(timeout time.Duration) *WebSocket { return ws } +func (ws *WebSocket) SetLogFile(path string) *WebSocket { + var err error + ws.logger, err = logger.CreateLogFile(path) + if err != nil { + return nil + } + return ws +} + func (ws *WebSocket) SetCompression(compress bool) *WebSocket { ws.Option = append(ws.Option, func(ws *WebSocket) error { ws.Conn.EnableWriteCompression(compress) @@ -189,12 +200,12 @@ func (ws *WebSocket) initialize() { var res rpc.RPCResponse err := ws.read(&res) if err != nil { - // TODO need to find a proper way to log this error + ws.logger.Logger.Println(err) continue } responseChan, ok := ws.getResponseChannel(fmt.Sprintf("%v", res.ID)) if !ok { - // TODO need to find a proper way to log this + ws.logger.Logger.Println("ResponseChannel is not ok") continue } responseChan <- res diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go new file mode 100644 index 0000000..52b5ff0 --- /dev/null +++ b/pkg/logger/logger.go @@ -0,0 +1,20 @@ +package logger + +import ( + "log" + "os" +) + +type LogData struct { + LogFile *os.File + Logger *log.Logger +} + +func CreateLogFile(path string) (logData *LogData, err error) { + logData.LogFile, err = os.Create("surrealdbgo.log") + if err != nil { + return + } + logData.Logger = log.New(logData.LogFile, "Surreal: ", log.Ldate|log.Ltime) + return +} From 98eb18ae1d454abc9c2b98afdc89abd26e73ce31 Mon Sep 17 00:00:00 2001 From: ElecTwix <51170038+ElecTwix@users.noreply.github.com> Date: Fri, 12 May 2023 16:33:24 +0300 Subject: [PATCH 2/5] std log to -> zerolog unit tests added. --- db_test.go | 2 +- go.mod | 4 ++++ go.sum | 13 +++++++++++++ pkg/gorilla/gorilla.go | 4 ++-- pkg/logger/logger.go | 20 +++++++++++++------- pkg/logger/logger_test.go | 31 +++++++++++++++++++++++++++++++ 6 files changed, 64 insertions(+), 10 deletions(-) create mode 100644 pkg/logger/logger_test.go diff --git a/db_test.go b/db_test.go index 2b682c3..1b63708 100644 --- a/db_test.go +++ b/db_test.go @@ -36,7 +36,7 @@ func TestSurrealDBSuite(t *testing.T) { SurrealDBSuite.wsImplementations["gorilla"] = gorilla.Create() // With options - SurrealDBSuite.wsImplementations["gorilla_opt"] = gorilla.Create().SetTimeOut(time.Minute).SetCompression(true) + SurrealDBSuite.wsImplementations["gorilla_opt"] = gorilla.Create().SetTimeOut(time.Minute).SetCompression(true).SetLogFile("surrealdb.log") RunWsMap(t, SurrealDBSuite) } diff --git a/go.mod b/go.mod index 7b6ef39..ce0d00f 100644 --- a/go.mod +++ b/go.mod @@ -4,11 +4,15 @@ go 1.18 require ( github.com/gorilla/websocket v1.5.0 + github.com/rs/zerolog v1.29.1 github.com/stretchr/testify v1.8.2 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect + github.com/mattn/go-colorable v0.1.12 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index b08125a..d0856b7 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,20 @@ +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc= +github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -12,6 +22,9 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6 h1:foEbQz/B0Oz6YIqu/69kfXPYeFQAuuMYFkjaqXzl5Wo= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/gorilla/gorilla.go b/pkg/gorilla/gorilla.go index b646dfb..7759ce2 100644 --- a/pkg/gorilla/gorilla.go +++ b/pkg/gorilla/gorilla.go @@ -200,12 +200,12 @@ func (ws *WebSocket) initialize() { var res rpc.RPCResponse err := ws.read(&res) if err != nil { - ws.logger.Logger.Println(err) + ws.logger.Logger.Err(err) continue } responseChan, ok := ws.getResponseChannel(fmt.Sprintf("%v", res.ID)) if !ok { - ws.logger.Logger.Println("ResponseChannel is not ok") + ws.logger.Logger.Err(errors.New("ResponseChannel is not ok")) continue } responseChan <- res diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index 52b5ff0..4957a83 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -1,20 +1,26 @@ package logger import ( - "log" "os" + + "github.com/rs/zerolog" +) + +const ( + permission = 0664 ) type LogData struct { LogFile *os.File - Logger *log.Logger + Logger *zerolog.Logger } -func CreateLogFile(path string) (logData *LogData, err error) { - logData.LogFile, err = os.Create("surrealdbgo.log") +func CreateLogFile(path string) (*LogData, error) { + file, err := os.OpenFile(path, os.O_APPEND|os.O_CREATE|os.O_WRONLY, permission) if err != nil { - return + return nil, err } - logData.Logger = log.New(logData.LogFile, "Surreal: ", log.Ldate|log.Ltime) - return + + newlogger := zerolog.New(zerolog.SyncWriter(file)).With().Timestamp().Logger() + return &LogData{LogFile: file, Logger: &newlogger}, err } diff --git a/pkg/logger/logger_test.go b/pkg/logger/logger_test.go new file mode 100644 index 0000000..fdf5264 --- /dev/null +++ b/pkg/logger/logger_test.go @@ -0,0 +1,31 @@ +package logger_test + +import ( + "os" + "testing" + + "github.com/stretchr/testify/require" + "github.com/surrealdb/surrealdb.go/pkg/logger" +) + +func TestLog(t *testing.T) { + templogger, err := logger.CreateLogFile("../../surrealdb.log") + require.NoError(t, err) + require.NotNil(t, templogger) + require.NotNil(t, templogger.LogFile) + require.NotNil(t, templogger.Logger) + // Get Stats Before + stats, err := templogger.LogFile.Stat() + require.NoError(t, err) + require.Equal(t, stats.Size(), int64(0)) + templogger.Logger.Info().Msg("Test") + // Get Stats After + stats, err = templogger.LogFile.Stat() + require.NoError(t, err) + require.Greater(t, stats.Size(), int64(0)) + // Delete Log File + _, err = templogger.LogFile.Write([]byte{}) + require.NoError(t, err) + err = os.Remove("../../surrealdb.log") + require.NoError(t, err) +} From debb6cec20e2ad8b78681bf16441a52fdfcd7522 Mon Sep 17 00:00:00 2001 From: ElecTwix <51170038+ElecTwix@users.noreply.github.com> Date: Sat, 13 May 2023 19:57:26 +0300 Subject: [PATCH 3/5] Logger refactor according to review *.log added to .gitignore rawlogger func added for raw io.writer --- .gitignore | 1 + db_test.go | 2 +- pkg/gorilla/gorilla.go | 10 ++++++++-- pkg/logger/logger.go | 23 +++++++++++++++++------ pkg/logger/logger_test.go | 20 +++++--------------- 5 files changed, 32 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index 3043a8f..75cc166 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ Temporary Items *.db *.test *.cover +*.log diff --git a/db_test.go b/db_test.go index 1b63708..97a42cf 100644 --- a/db_test.go +++ b/db_test.go @@ -36,7 +36,7 @@ func TestSurrealDBSuite(t *testing.T) { SurrealDBSuite.wsImplementations["gorilla"] = gorilla.Create() // With options - SurrealDBSuite.wsImplementations["gorilla_opt"] = gorilla.Create().SetTimeOut(time.Minute).SetCompression(true).SetLogFile("surrealdb.log") + SurrealDBSuite.wsImplementations["gorilla_opt"] = gorilla.Create().SetTimeOut(time.Minute).SetCompression(true).Logger("") RunWsMap(t, SurrealDBSuite) } diff --git a/pkg/gorilla/gorilla.go b/pkg/gorilla/gorilla.go index 7759ce2..c837038 100644 --- a/pkg/gorilla/gorilla.go +++ b/pkg/gorilla/gorilla.go @@ -76,15 +76,21 @@ func (ws *WebSocket) SetTimeOut(timeout time.Duration) *WebSocket { return ws } -func (ws *WebSocket) SetLogFile(path string) *WebSocket { +// If path is empty it will use os.stdout/os.stderr +func (ws *WebSocket) Logger(path string) *WebSocket { var err error - ws.logger, err = logger.CreateLogFile(path) + ws.logger, err = logger.NewLogger(path) if err != nil { return nil } return ws } +func (ws *WebSocket) RawLogger(logger *logger.LogData) *WebSocket { + ws.logger = logger + return ws +} + func (ws *WebSocket) SetCompression(compress bool) *WebSocket { ws.Option = append(ws.Option, func(ws *WebSocket) error { ws.Conn.EnableWriteCompression(compress) diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index 4957a83..4f5c1ad 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -1,6 +1,7 @@ package logger import ( + "io" "os" "github.com/rs/zerolog" @@ -10,17 +11,27 @@ const ( permission = 0664 ) +// In memory logger mode file will be nil type LogData struct { LogFile *os.File Logger *zerolog.Logger } -func CreateLogFile(path string) (*LogData, error) { - file, err := os.OpenFile(path, os.O_APPEND|os.O_CREATE|os.O_WRONLY, permission) - if err != nil { - return nil, err +// If path is empty it will use os.stdout/os.stderr +func NewLogger(path string) (_ *LogData, err error) { + var writer io.Writer = os.Stderr + var file *os.File + if path != "" { + file, err = os.OpenFile(path, os.O_APPEND|os.O_CREATE|os.O_WRONLY, permission) + if err != nil { + return nil, err + } + writer = zerolog.SyncWriter(file) } + return NewLoggerRaw(writer, file), err +} - newlogger := zerolog.New(zerolog.SyncWriter(file)).With().Timestamp().Logger() - return &LogData{LogFile: file, Logger: &newlogger}, err +func NewLoggerRaw(w io.Writer, f *os.File) *LogData { + newlogger := zerolog.New(w).With().Timestamp().Logger() + return &LogData{LogFile: f, Logger: &newlogger} } diff --git a/pkg/logger/logger_test.go b/pkg/logger/logger_test.go index fdf5264..628cac3 100644 --- a/pkg/logger/logger_test.go +++ b/pkg/logger/logger_test.go @@ -1,7 +1,7 @@ package logger_test import ( - "os" + "bytes" "testing" "github.com/stretchr/testify/require" @@ -9,23 +9,13 @@ import ( ) func TestLog(t *testing.T) { - templogger, err := logger.CreateLogFile("../../surrealdb.log") - require.NoError(t, err) + buff := bytes.NewBuffer([]byte{}) + templogger := logger.NewLoggerRaw(buff, nil) require.NotNil(t, templogger) - require.NotNil(t, templogger.LogFile) require.NotNil(t, templogger.Logger) // Get Stats Before - stats, err := templogger.LogFile.Stat() - require.NoError(t, err) - require.Equal(t, stats.Size(), int64(0)) + require.Equal(t, buff.Len(), 0) templogger.Logger.Info().Msg("Test") // Get Stats After - stats, err = templogger.LogFile.Stat() - require.NoError(t, err) - require.Greater(t, stats.Size(), int64(0)) - // Delete Log File - _, err = templogger.LogFile.Write([]byte{}) - require.NoError(t, err) - err = os.Remove("../../surrealdb.log") - require.NoError(t, err) + require.Greater(t, buff.Len(), 0) } From a206d1d8b0b764275b5e0a5b529b9a0087943633 Mon Sep 17 00:00:00 2001 From: ElecTwix <51170038+ElecTwix@users.noreply.github.com> Date: Sat, 13 May 2023 20:03:44 +0300 Subject: [PATCH 4/5] Fix lint --- pkg/gorilla/gorilla.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/gorilla/gorilla.go b/pkg/gorilla/gorilla.go index c837038..8477f9a 100644 --- a/pkg/gorilla/gorilla.go +++ b/pkg/gorilla/gorilla.go @@ -86,8 +86,8 @@ func (ws *WebSocket) Logger(path string) *WebSocket { return ws } -func (ws *WebSocket) RawLogger(logger *logger.LogData) *WebSocket { - ws.logger = logger +func (ws *WebSocket) RawLogger(logData *logger.LogData) *WebSocket { + ws.logger = logData return ws } From 6a61f0471ae1d413577d1c76aa13234b366ecc73 Mon Sep 17 00:00:00 2001 From: ElecTwix <51170038+ElecTwix@users.noreply.github.com> Date: Thu, 18 May 2023 17:43:51 +0300 Subject: [PATCH 5/5] Logger made builder channels added --- db_test.go | 8 +++++- pkg/gorilla/gorilla.go | 13 +++++---- pkg/logger/logger.go | 55 +++++++++++++++++++++++++++------------ pkg/logger/logger_test.go | 5 ++-- 4 files changed, 55 insertions(+), 26 deletions(-) diff --git a/db_test.go b/db_test.go index 97a42cf..cac65fd 100644 --- a/db_test.go +++ b/db_test.go @@ -1,14 +1,17 @@ package surrealdb_test import ( + "bytes" "fmt" "os" "testing" "time" + "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" "github.com/surrealdb/surrealdb.go" gorilla "github.com/surrealdb/surrealdb.go/pkg/gorilla" + "github.com/surrealdb/surrealdb.go/pkg/logger" "github.com/surrealdb/surrealdb.go/pkg/websocket" ) @@ -36,7 +39,10 @@ func TestSurrealDBSuite(t *testing.T) { SurrealDBSuite.wsImplementations["gorilla"] = gorilla.Create() // With options - SurrealDBSuite.wsImplementations["gorilla_opt"] = gorilla.Create().SetTimeOut(time.Minute).SetCompression(true).Logger("") + buff := bytes.NewBuffer([]byte{}) + logData, err := logger.New().FromBuffer(buff).Make() + require.NoError(t, err) + SurrealDBSuite.wsImplementations["gorilla_opt"] = gorilla.Create().SetTimeOut(time.Minute).SetCompression(true).Logger(logData) RunWsMap(t, SurrealDBSuite) } diff --git a/pkg/gorilla/gorilla.go b/pkg/gorilla/gorilla.go index 8477f9a..a41db58 100644 --- a/pkg/gorilla/gorilla.go +++ b/pkg/gorilla/gorilla.go @@ -77,12 +77,8 @@ func (ws *WebSocket) SetTimeOut(timeout time.Duration) *WebSocket { } // If path is empty it will use os.stdout/os.stderr -func (ws *WebSocket) Logger(path string) *WebSocket { - var err error - ws.logger, err = logger.NewLogger(path) - if err != nil { - return nil - } +func (ws *WebSocket) Logger(logData *logger.LogData) *WebSocket { + ws.logger = logData return ws } @@ -207,11 +203,14 @@ func (ws *WebSocket) initialize() { err := ws.read(&res) if err != nil { ws.logger.Logger.Err(err) + ws.logger.LogChannel <- err.Error() continue } responseChan, ok := ws.getResponseChannel(fmt.Sprintf("%v", res.ID)) if !ok { - ws.logger.Logger.Err(errors.New("ResponseChannel is not ok")) + err = errors.New("ResponseChannel is not ok") + ws.logger.Logger.Err(err) + ws.logger.LogChannel <- err.Error() continue } responseChan <- res diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index 4f5c1ad..fb31330 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -11,27 +11,50 @@ const ( permission = 0664 ) -// In memory logger mode file will be nil +type LogBuild struct { + writer io.Writer + path string + LogChannel chan string +} + type LogData struct { - LogFile *os.File - Logger *zerolog.Logger + writer io.Writer + LogFile *os.File + Logger zerolog.Logger + LogChannel chan string +} + +func New() *LogBuild { + return &LogBuild{} +} + +func (build *LogBuild) FromPath(path string) *LogBuild { + build.path = path + return build } -// If path is empty it will use os.stdout/os.stderr -func NewLogger(path string) (_ *LogData, err error) { - var writer io.Writer = os.Stderr - var file *os.File - if path != "" { - file, err = os.OpenFile(path, os.O_APPEND|os.O_CREATE|os.O_WRONLY, permission) +func (build *LogBuild) FromBuffer(w io.Writer) *LogBuild { + build.writer = w + return build +} + +func (build *LogBuild) FromChannel(chn chan string) *LogBuild { + build.LogChannel = chn + return build +} + +func (build *LogBuild) Make() (logData *LogData, err error) { + logData = new(LogData) + logData.writer = os.Stdout + logData.writer = build.writer + logData.LogChannel = build.LogChannel + if build.path != "" { + logData.LogFile, err = os.OpenFile(build.path, os.O_APPEND|os.O_CREATE|os.O_WRONLY, permission) if err != nil { return nil, err } - writer = zerolog.SyncWriter(file) + logData.writer = zerolog.SyncWriter(logData.LogFile) } - return NewLoggerRaw(writer, file), err -} - -func NewLoggerRaw(w io.Writer, f *os.File) *LogData { - newlogger := zerolog.New(w).With().Timestamp().Logger() - return &LogData{LogFile: f, Logger: &newlogger} + logData.Logger = zerolog.New(logData.writer).With().Timestamp().Logger() + return } diff --git a/pkg/logger/logger_test.go b/pkg/logger/logger_test.go index 628cac3..5269ec6 100644 --- a/pkg/logger/logger_test.go +++ b/pkg/logger/logger_test.go @@ -10,12 +10,13 @@ import ( func TestLog(t *testing.T) { buff := bytes.NewBuffer([]byte{}) - templogger := logger.NewLoggerRaw(buff, nil) + templogger, err := logger.New().FromBuffer(buff).Make() + require.NoError(t, err) require.NotNil(t, templogger) require.NotNil(t, templogger.Logger) // Get Stats Before require.Equal(t, buff.Len(), 0) templogger.Logger.Info().Msg("Test") // Get Stats After - require.Greater(t, buff.Len(), 0) + require.Contains(t, buff.String(), "Test") }