(new): log formatter options
Golang lint / lint (push) Successful in 1m11s

(refactor): API initialism names

(tests): logger format coverage

(doc): updated public names
This commit is contained in:
2026-04-28 16:18:14 +03:00
parent a34734366d
commit fc4386df75
42 changed files with 544 additions and 462 deletions
+53 -11
View File
@@ -6,6 +6,13 @@ import (
"git.scuroneko.dev/scuroneko/sneklog/v2"
)
type LogFormat string
const (
LogFormatText LogFormat = "text"
LogFormatJSON LogFormat = "json"
)
// GetLoggerLevel returns DEBUG when DEBUG=true in env, otherwise FATAL.
func GetLoggerLevel() sneklog.LogLevel {
level := sneklog.FATAL
@@ -17,12 +24,28 @@ func GetLoggerLevel() sneklog.LogLevel {
// CreateLogger creates a logger with the shared default policy:
// JSON stdout output, provided prefix, and provided level.
func CreateLogger(prefix string, level sneklog.LogLevel) *sneklog.Logger {
logger := sneklog.CreateLogger().Level(level)
if prefix != "" {
logger.Prefix(prefix)
func CreateLogger(
name string, level sneklog.LogLevel,
format LogFormat, formatter *sneklog.Formatter,
) *sneklog.Logger {
logger := sneklog.NewLogger().SetLevel(level)
if name != "" {
logger.SetName(name)
}
switch format {
case LogFormatJSON:
writer := logger.CreateJsonStdoutWriter()
if formatter != nil {
writer.SetFormatter(formatter)
}
logger.AddWriters(writer)
default:
writer := logger.CreateTextStdoutWriter()
if formatter != nil {
writer.SetFormatter(formatter)
}
logger.AddWriters(writer)
}
logger.AddWriter(logger.CreateJsonStdoutWriter())
return logger
}
@@ -31,12 +54,31 @@ func CreateLogger(prefix string, level sneklog.LogLevel) *sneklog.Logger {
//
// 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 sneklog.LogLevel, filePath string) (*sneklog.Logger, error) {
logger := CreateLogger(prefix, level)
fileWriter, err := logger.CreateTextFileWriter(filePath)
if err != nil {
return logger, err
func CreateFileLogger(
prefix string, level sneklog.LogLevel, filePath string,
format LogFormat, formatter *sneklog.Formatter,
) (*sneklog.Logger, error) {
logger := CreateLogger(prefix, level, format, formatter)
switch format {
case LogFormatJSON:
writer, err := logger.CreateJsonFileWriter(filePath)
if err != nil {
return logger, err
}
if formatter != nil {
writer.SetFormatter(formatter)
}
logger.AddWriters(writer)
default:
writer, err := logger.CreateTextFileWriter(filePath)
if err != nil {
return logger, err
}
if formatter != nil {
writer.SetFormatter(formatter)
}
logger.AddWriters(writer)
}
logger.AddWriter(fileWriter)
return logger, nil
}
+1 -1
View File
@@ -12,7 +12,7 @@ import (
func TestCreateFileLoggerWritesToConfiguredFile(t *testing.T) {
logPath := filepath.Join(t.TempDir(), "main.log")
logger, err := CreateFileLogger("TEST", sneklog.DEBUG, logPath)
logger, err := CreateFileLogger("TEST", sneklog.DEBUG, logPath, LogFormatText, nil)
if err != nil {
t.Fatalf("CreateFileLogger returned error: %v", err)
}