BackGo/pkg/logger/logger.go

46 lines
1.0 KiB
Go

package logger
import (
"io"
"log"
"os"
)
// Logger holds the log package's Logger instance.
type Logger struct {
*log.Logger
}
// NewLogger creates a new Logger instance. By default, it logs to stdout.
func NewLogger() *Logger {
return &Logger{
Logger: log.New(os.Stdout, "", log.LstdFlags),
}
}
// LogToFile configures the logger to log to a specified file.
func (l *Logger) LogToFile(filePath string) error {
file, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
return err
}
l.SetOutput(file)
return nil
}
// LogToStdout configures the logger to log to stdout.
func (l *Logger) LogToStdout() {
l.SetOutput(os.Stdout)
}
// LogToBoth configures the logger to log to both a file and stdout.
func (l *Logger) LogToBoth(filePath string) error {
file, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
return err
}
multi := io.MultiWriter(file, os.Stdout)
l.SetOutput(multi)
return nil
}