refactor logging setup and split local/remote close APIs
This commit is contained in:
@@ -14,3 +14,29 @@ func GetLoggerLevel() slog.LogLevel {
|
||||
}
|
||||
return level
|
||||
}
|
||||
|
||||
// CreateLogger creates a logger with the shared default policy:
|
||||
// JSON stdout output, provided prefix, and provided level.
|
||||
func CreateLogger(prefix string, level slog.LogLevel) *slog.Logger {
|
||||
logger := slog.CreateLogger().Level(level)
|
||||
if prefix != "" {
|
||||
logger.Prefix(prefix)
|
||||
}
|
||||
logger.AddWriter(logger.CreateJsonStdoutWriter())
|
||||
return logger
|
||||
}
|
||||
|
||||
// CreateFileLogger creates a logger with the shared default policy and appends
|
||||
// file output to the provided path.
|
||||
//
|
||||
// The returned logger is always non-nil. When file writer creation fails, the
|
||||
// logger still writes to stdout and the error is returned to the caller.
|
||||
func CreateFileLogger(prefix string, level slog.LogLevel, filePath string) (*slog.Logger, error) {
|
||||
logger := CreateLogger(prefix, level)
|
||||
fileWriter, err := logger.CreateTextFileWriter(filePath)
|
||||
if err != nil {
|
||||
return logger, err
|
||||
}
|
||||
logger.AddWriter(fileWriter)
|
||||
return logger, nil
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.nix13.pw/scuroneko/slog"
|
||||
)
|
||||
|
||||
func TestCreateFileLoggerWritesToConfiguredFile(t *testing.T) {
|
||||
logPath := filepath.Join(t.TempDir(), "main.log")
|
||||
|
||||
logger, err := CreateFileLogger("TEST", slog.DEBUG, logPath)
|
||||
if err != nil {
|
||||
t.Fatalf("CreateFileLogger returned error: %v", err)
|
||||
}
|
||||
logger.Infoln("hello from file logger")
|
||||
if err := logger.Close(); err != nil {
|
||||
t.Fatalf("Close returned error: %v", err)
|
||||
}
|
||||
|
||||
data, err := os.ReadFile(logPath)
|
||||
if err != nil {
|
||||
t.Fatalf("ReadFile returned error: %v", err)
|
||||
}
|
||||
if !strings.Contains(string(data), "hello from file logger") {
|
||||
t.Fatalf("expected log message in file, got %q", string(data))
|
||||
}
|
||||
if !strings.Contains(string(data), "[TEST]") {
|
||||
t.Fatalf("expected prefix in file, got %q", string(data))
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
package utils
|
||||
|
||||
const (
|
||||
VersionString = "1.0.0-rc.5"
|
||||
VersionString = "1.0.0-rc.7"
|
||||
VersionMajor = 1
|
||||
VersionMinor = 0
|
||||
VersionPatch = 0
|
||||
VersionBeta = 5
|
||||
VersionBeta = 7
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user