ai-gateway/common/logger/logger.go

104 lines
2.3 KiB
Go
Raw Normal View History

package logger
2023-04-22 12:39:27 +00:00
import (
2023-09-17 07:39:46 +00:00
"context"
2023-04-22 12:39:27 +00:00
"fmt"
"io"
"log"
"os"
"path/filepath"
"sync"
2023-04-22 12:39:27 +00:00
"time"
"github.com/gin-gonic/gin"
"github.com/songquanpeng/one-api/common/config"
"github.com/songquanpeng/one-api/common/helper"
2023-04-22 12:39:27 +00:00
)
2023-09-17 07:39:46 +00:00
const (
loggerDEBUG = "DEBUG"
2023-09-17 07:39:46 +00:00
loggerINFO = "INFO"
loggerWarn = "WARN"
loggerError = "ERR"
)
var setupLogOnce sync.Once
func SetupLogger() {
setupLogOnce.Do(func() {
if LogDir != "" {
logPath := filepath.Join(LogDir, fmt.Sprintf("oneapi-%s.log", time.Now().Format("20060102")))
fd, err := os.OpenFile(logPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatal("failed to open log file")
}
gin.DefaultWriter = io.MultiWriter(os.Stdout, fd)
gin.DefaultErrorWriter = io.MultiWriter(os.Stderr, fd)
2023-04-22 12:39:27 +00:00
}
})
2023-04-22 12:39:27 +00:00
}
func SysLog(s string) {
t := time.Now()
_, _ = fmt.Fprintf(gin.DefaultWriter, "[SYS] %v | %s \n", t.Format("2006/01/02 - 15:04:05"), s)
}
func SysError(s string) {
t := time.Now()
_, _ = fmt.Fprintf(gin.DefaultErrorWriter, "[SYS] %v | %s \n", t.Format("2006/01/02 - 15:04:05"), s)
}
func Debug(ctx context.Context, msg string) {
if config.DebugEnabled {
logHelper(ctx, loggerDEBUG, msg)
}
}
func Info(ctx context.Context, msg string) {
2023-09-17 07:39:46 +00:00
logHelper(ctx, loggerINFO, msg)
}
func Warn(ctx context.Context, msg string) {
2023-09-17 07:39:46 +00:00
logHelper(ctx, loggerWarn, msg)
}
func Error(ctx context.Context, msg string) {
2023-09-17 07:39:46 +00:00
logHelper(ctx, loggerError, msg)
}
func Debugf(ctx context.Context, format string, a ...any) {
Debug(ctx, fmt.Sprintf(format, a...))
}
func Infof(ctx context.Context, format string, a ...any) {
Info(ctx, fmt.Sprintf(format, a...))
}
func Warnf(ctx context.Context, format string, a ...any) {
Warn(ctx, fmt.Sprintf(format, a...))
}
func Errorf(ctx context.Context, format string, a ...any) {
Error(ctx, fmt.Sprintf(format, a...))
}
2023-09-17 07:39:46 +00:00
func logHelper(ctx context.Context, level string, msg string) {
writer := gin.DefaultErrorWriter
if level == loggerINFO {
writer = gin.DefaultWriter
}
2024-04-26 15:05:48 +00:00
id := ctx.Value(helper.RequestIdKey)
2024-03-13 17:02:47 +00:00
if id == nil {
id = helper.GenRequestID()
}
2023-09-17 07:39:46 +00:00
now := time.Now()
_, _ = fmt.Fprintf(writer, "[%s] %v | %s | %s \n", level, now.Format("2006/01/02 - 15:04:05"), id, msg)
SetupLogger()
2023-09-17 07:39:46 +00:00
}
2023-04-22 12:39:27 +00:00
func FatalLog(v ...any) {
t := time.Now()
_, _ = fmt.Fprintf(gin.DefaultErrorWriter, "[FATAL] %v | %v \n", t.Format("2006/01/02 - 15:04:05"), v)
os.Exit(1)
}