summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-07-03 19:34:52 +0300
committerKyren223 <Kyren223@proton.me>2025-07-03 19:34:52 +0300
commit635db98044c4bdf1d9badc0e24ce2db461d83c75 (patch)
treebf011883053a70e8b9766e6a317eab9f7325c9e2
parenteb219cab1ad8b61d5637ebbcd7f3d9bf4b3412dd (diff)
Replaced log with slog, preparing to migrate all logs to slog
-rw-r--r--cmd/server/main.go65
-rw-r--r--go.mod1
-rw-r--r--go.sum2
3 files changed, 41 insertions, 27 deletions
diff --git a/cmd/server/main.go b/cmd/server/main.go
index a3a06a0..6b6d04b 100644
--- a/cmd/server/main.go
+++ b/cmd/server/main.go
@@ -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
+}
diff --git a/go.mod b/go.mod
index b6556d8..5b723cf 100644
--- a/go.mod
+++ b/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
)
diff --git a/go.sum b/go.sum
index c934a25..4005d4c 100644
--- a/go.sum
+++ b/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=