Skip to content

Commit

Permalink
Public io.Writer in the log.Writer interface.
Browse files Browse the repository at this point in the history
  • Loading branch information
mstmdev committed Nov 29, 2021
1 parent 5326715 commit 61355bf
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 11 deletions.
5 changes: 5 additions & 0 deletions console_logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package log

import (
"fmt"
"os"
)

type consoleLogger struct {
Expand All @@ -26,3 +27,7 @@ func (l *consoleLogger) Log(format string, args ...interface{}) {
func (l *consoleLogger) Close() error {
return nil
}

func (l *consoleLogger) Write(p []byte) (n int, err error) {
return os.Stdout.Write(p)
}
4 changes: 4 additions & 0 deletions default_logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ func Close() error {
return defaultLogger.Close()
}

func DefaultLogger() Logger {
return defaultLogger
}

func init() {
if defaultLogger == nil {
defaultLogger = NewConsoleLogger(InfoLevel)
Expand Down
4 changes: 4 additions & 0 deletions empty_logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,7 @@ func (l *emptyLogger) Log(format string, args ...interface{}) {
func (l *emptyLogger) Close() error {
return nil
}

func (l *emptyLogger) Write(p []byte) (n int, err error) {
return len(p), nil
}
30 changes: 19 additions & 11 deletions file_logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package log

import (
"bufio"
"errors"
"fmt"
"os"
"path/filepath"
Expand All @@ -22,7 +23,7 @@ type fileLogger struct {
}

type logMsg struct {
log string
log []byte
closed bool
}

Expand Down Expand Up @@ -50,15 +51,10 @@ func NewFileLoggerWithAutoFlush(level Level, logDir string, filePrefix string, a

// Log write a format log to file
func (l *fileLogger) Log(format string, args ...interface{}) {
if l.initialized && !l.closed {
format = fmt.Sprintf("[%s] ", time.Now().Format("2006-01-02 15:04:05")) + format
format = fmt.Sprintf(format, args...)
format = l.builder.AppendRowTerminator(format)
l.in <- logMsg{
log: format,
closed: false,
}
}
format = fmt.Sprintf("[%s] ", time.Now().Format("2006-01-02 15:04:05")) + format
format = fmt.Sprintf(format, args...)
format = l.builder.AppendRowTerminator(format)
l.Write([]byte(format))
}

func (l *fileLogger) Close() error {
Expand Down Expand Up @@ -123,7 +119,7 @@ func (l *fileLogger) write() {
return
}
if l.initialized && l.writer != nil && len(msg.log) > 0 {
if _, err := l.writer.WriteString(msg.log); err != nil {
if _, err := l.writer.Write(msg.log); err != nil {
l.innerLog("file logger write log error. %s", err)
}
}
Expand Down Expand Up @@ -163,3 +159,15 @@ func (l *fileLogger) startAutoFlush() {
}
}()
}

func (l *fileLogger) Write(p []byte) (n int, err error) {
if l.initialized && !l.closed {
l.in <- logMsg{
log: p,
closed: false,
}
return len(p), nil
} else {
return 0, errors.New("file logger is uninitialized or closed")
}
}
3 changes: 3 additions & 0 deletions logger.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package log

import "io"

// Logger define a universal log interface
type Logger interface {
Debug(format string, args ...interface{})
Expand All @@ -11,6 +13,7 @@ type Logger interface {

// Writer implement write to log
type Writer interface {
io.Writer
// Log write log to output
Log(format string, args ...interface{})
// Close to close log and release dependencies
Expand Down
12 changes: 12 additions & 0 deletions multi_logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,15 @@ func (l *multiLogger) Close() error {
}
return err
}

func (l *multiLogger) Write(p []byte) (n int, err error) {
n = len(p)
for _, logger := range l.loggers {
nn, writeErr := logger.Write(p)
if writeErr != nil {
err = writeErr
n = nn
}
}
return n, err
}

0 comments on commit 61355bf

Please sign in to comment.