Skip to content

Commit 65801c0

Browse files
committed
feat: enhance structured logging with service context and dynamic levels
1 parent 33e8ccb commit 65801c0

File tree

5 files changed

+38
-38
lines changed

5 files changed

+38
-38
lines changed

cmd/main.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,13 @@ var (
3232
)
3333

3434
var rootCommand = &cobra.Command{
35-
Use: "ns",
36-
Short: "NeoShowcase",
37-
Version: fmt.Sprintf("%s (%s)", version, revision),
38-
PersistentPreRun: cli.PrintVersion,
35+
Use: "ns",
36+
Short: "NeoShowcase",
37+
Version: fmt.Sprintf("%s (%s)", version, revision),
38+
PersistentPreRun: func(cmd *cobra.Command, args []string) {
39+
serviceName := cmd.Name()
40+
slogutil.InitLogger(serviceName, version, revision)
41+
},
3942
}
4043

4144
type component interface {
@@ -78,9 +81,6 @@ func componentCommand(name string, gen componentGenF, longDesc string) *cobra.Co
7881
}
7982

8083
func main() {
81-
// Initialize logger early with default level
82-
slogutil.InitLogger(slog.LevelInfo)
83-
8484
// Initialize OpenTelemetry tracer provider for trace ID generation
8585
if err := observability.InitTracerProvider("neoshowcase"); err != nil {
8686
slog.Error("failed to initialize tracer provider", "error", err)

pkg/util/cli/flag.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func SetupDebugFlag(flags *pflag.FlagSet) {
1818
viper.SetDefault("debug", false)
1919
cobra.OnInitialize(func() {
2020
if Debug {
21-
slogutil.InitLogger(slog.LevelDebug)
21+
slogutil.SetLogLevel(slog.LevelDebug)
2222
boil.DebugMode = true
2323
}
2424
})
@@ -44,6 +44,6 @@ func SetupLogLevelFlag(flags *pflag.FlagSet) {
4444
slog.Error("invalid log level", "level", levelStr)
4545
level = slog.LevelInfo
4646
}
47-
slogutil.InitLogger(level)
47+
slogutil.SetLogLevel(level)
4848
})
4949
}

pkg/util/cli/version.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
package cli
22

3-
import (
4-
"log/slog"
5-
6-
"github.com/spf13/cobra"
7-
)
8-
93
var (
104
version string
115
revision string
@@ -19,9 +13,3 @@ func SetVersion(ver, rev string) {
1913
func GetVersion() (ver, rev string) {
2014
return version, revision
2115
}
22-
23-
// PrintVersion バージョンを出力する
24-
func PrintVersion(cmd *cobra.Command, _ []string) {
25-
cmd = cmd.Root()
26-
slog.Info("neoshowcase", "name", cmd.Use, "version", cmd.Version)
27-
}

pkg/util/slogutil/init.go

Lines changed: 0 additions & 17 deletions
This file was deleted.

pkg/util/slogutil/logger.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package slogutil
2+
3+
import (
4+
"log/slog"
5+
"os"
6+
)
7+
8+
var levelVar = new(slog.LevelVar) // default level is INFO
9+
10+
// InitLogger initializes the global slog logger with CustomHandler
11+
func InitLogger(service, version, revision string) {
12+
opts := &slog.HandlerOptions{
13+
AddSource: true,
14+
Level: levelVar,
15+
}
16+
handler := NewCustomHandler(os.Stdout, opts)
17+
logger := slog.New(handler).With(
18+
slog.Group("service",
19+
"name", service,
20+
"version", version,
21+
"revision", revision,
22+
),
23+
)
24+
slog.SetDefault(logger)
25+
}
26+
27+
func SetLogLevel(level slog.Level) {
28+
levelVar.Set(level)
29+
}

0 commit comments

Comments
 (0)