mirror of
https://github.com/Kyren223/eko.git
synced 2025-09-05 21:18:14 +00:00
Replaced log with slog, preparing to migrate all logs to slog
This commit is contained in:
@@ -3,49 +3,29 @@ package main
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
"os/signal"
|
||||
"path/filepath"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/kyren223/eko/internal/server"
|
||||
"github.com/kyren223/eko/internal/server/api"
|
||||
"github.com/kyren223/eko/pkg/assert"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
const port = 7223
|
||||
|
||||
var prod = true
|
||||
|
||||
func main() {
|
||||
stdout := flag.Bool("stdout", false, "enable logging to stdout")
|
||||
prodFlag := flag.Bool("prod", true, "true for production mode, false for dev mode")
|
||||
flag.Parse()
|
||||
prod = !(*prodFlag)
|
||||
|
||||
logDir := os.Getenv("EKO_SERVER_LOG_DIR")
|
||||
if logDir == "" {
|
||||
logDir = "logs"
|
||||
}
|
||||
|
||||
err := os.MkdirAll(logDir, 0750)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
logPath := fmt.Sprintf("eko-server-%s.log", time.Now().Format("2006-01-02_15-04-05"))
|
||||
logPath = filepath.Join(logDir, logPath)
|
||||
logFile, err := os.OpenFile(logPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0600) // #nosec G304
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer logFile.Close()
|
||||
assert.AddFlush(logFile)
|
||||
|
||||
if *stdout {
|
||||
log.SetOutput(io.MultiWriter(logFile, os.Stdout))
|
||||
} else {
|
||||
log.SetOutput(logFile)
|
||||
}
|
||||
setupLogging()
|
||||
|
||||
api.ConnectToDatabase()
|
||||
assert.AddFlush(api.DB())
|
||||
@@ -53,6 +33,7 @@ func main() {
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
signalChan := make(chan os.Signal, 1)
|
||||
signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)
|
||||
go func() {
|
||||
@@ -66,3 +47,33 @@ func main() {
|
||||
log.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
func setupLogging() {
|
||||
logDir := os.Getenv("EKO_SERVER_LOG_DIR")
|
||||
if logDir == "" {
|
||||
logDir = "logs"
|
||||
}
|
||||
err := os.MkdirAll(logDir, 0750)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
rotator := &lumberjack.Logger{
|
||||
Filename: filepath.Join(logDir, "server.log"),
|
||||
MaxSize: 1, // megabytes TODO: switch this to a more reasonable size (100?)
|
||||
MaxAge: 28, // days
|
||||
}
|
||||
|
||||
level := slog.LevelDebug
|
||||
if prod {
|
||||
level = slog.LevelInfo
|
||||
}
|
||||
handler := slog.NewJSONHandler(rotator, &slog.HandlerOptions{
|
||||
AddSource: true,
|
||||
Level: level,
|
||||
})
|
||||
|
||||
logger := slog.New(handler)
|
||||
slog.SetDefault(logger)
|
||||
slog.SetLogLoggerLevel(level) // TODO: remove me after fully migrating to slog
|
||||
}
|
||||
|
1
go.mod
1
go.mod
@@ -41,5 +41,6 @@ require (
|
||||
golang.org/x/sync v0.10.0 // indirect
|
||||
golang.org/x/sys v0.29.0 // indirect
|
||||
golang.org/x/text v0.21.0 // indirect
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
|
2
go.sum
2
go.sum
@@ -81,6 +81,8 @@ golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI=
|
||||
|
Reference in New Issue
Block a user