user-core-client/logger.go
2025-08-19 13:52:01 +08:00

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...))
}