52 lines
862 B
Go
52 lines
862 B
Go
|
package user_core_client
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"io"
|
||
|
"log"
|
||
|
"os"
|
||
|
"sync/atomic"
|
||
|
)
|
||
|
|
||
|
type Logger interface {
|
||
|
Printf(format string, v ...any)
|
||
|
}
|
||
|
|
||
|
func NewLogger() *SdkLogger {
|
||
|
return &SdkLogger{
|
||
|
logEnabled: atomic.Bool{},
|
||
|
logger: log.New(io.Discard, "user-core-sdk", log.LstdFlags|log.Lshortfile),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
type SdkLogger struct {
|
||
|
logEnabled atomic.Bool
|
||
|
logger *log.Logger
|
||
|
}
|
||
|
|
||
|
func (l *SdkLogger) Debug(debug bool) *SdkLogger {
|
||
|
if debug {
|
||
|
l.logger.SetOutput(os.Stdout)
|
||
|
} else {
|
||
|
l.logger.SetOutput(io.Discard)
|
||
|
}
|
||
|
l.logEnabled.Store(debug)
|
||
|
return l
|
||
|
}
|
||
|
|
||
|
func (l *SdkLogger) SetOutput(w io.Writer) *SdkLogger {
|
||
|
if w == nil {
|
||
|
l.logger.SetOutput(io.Discard)
|
||
|
} else {
|
||
|
l.logger.SetOutput(w)
|
||
|
}
|
||
|
return l
|
||
|
}
|
||
|
|
||
|
func (l *SdkLogger) Printf(format string, v ...any) {
|
||
|
if !l.logEnabled.Load() {
|
||
|
return
|
||
|
}
|
||
|
_ = l.logger.Output(2, fmt.Sprintf(format, v...))
|
||
|
}
|