diff --git a/cmd/client/client.go b/cmd/client/client.go index 0b74e45..9554090 100644 --- a/cmd/client/client.go +++ b/cmd/client/client.go @@ -1,7 +1,12 @@ package main -import "fmt" +import ( + "log/slog" + + "github.com/kyren223/eko/internal/utils" +) func main() { - fmt.Println("Eko 'Hello, World!' from client") + utils.SetupLogger("Client") + slog.Info("Eko 'Hello, World!'") } diff --git a/cmd/server/server.go b/cmd/server/server.go index c9c6238..4ba6978 100644 --- a/cmd/server/server.go +++ b/cmd/server/server.go @@ -1,7 +1,15 @@ package main -import "fmt" +import ( + "log/slog" + + "github.com/kyren223/eko/internal/utils" +) func main() { - fmt.Println("Eko 'Hello, World!' from server") + utils.SetupLogger("Server") + slog.Debug("Eko 'Hello, World!'") + slog.Info("Eko 'Hello, World!'") + slog.Warn("Eko 'Hello, World!'") + slog.Error("Eko 'Hello, World!'") } diff --git a/internal/utils/log.go b/internal/utils/log.go new file mode 100644 index 0000000..3548bd3 --- /dev/null +++ b/internal/utils/log.go @@ -0,0 +1,44 @@ +package utils + +import ( + "context" + "fmt" + "io" + "log" + "log/slog" + "os" + "time" +) + +func SetupLogger(name string) { + logger := slog.New(CustomHandler{os.Stdout, name, nil}) + slog.SetDefault(logger) + slog.SetLogLoggerLevel() +} + +type CustomHandler struct { + writer io.Writer + group string + attrs []slog.Attr +} + +func (h CustomHandler) Handle(ctx context.Context, r slog.Record) error { + // timestamp := time.Now().Format(time.RFC3339Nano) + timestamp := time.Now().Format(time.TimeOnly) + severity := r.Level.String() + _, err := fmt.Fprintf(h.writer, "[%s] [%s/%s]: %s\n", timestamp, h.group, severity, r.Message) + return err +} + +func (h CustomHandler) Enabled(ctx context.Context, level slog.Level) bool { + slog.Handler + return true +} + +func (h CustomHandler) WithAttrs(attrs []slog.Attr) slog.Handler { + return &CustomHandler{h.writer, h.group, append(h.attrs, attrs...)} +} + +func (h CustomHandler) WithGroup(name string) slog.Handler { + return &CustomHandler{h.writer, name, h.attrs} +}