FILE / ScuroNeko/Laniakea

utils/utils.go

Исходный файл и его история в репозитории.
FILE fc4386df751ea17cd624df2eb3f338d342e3e1e1
Files
Laniakea/utils/utils.go
T
ScuroNeko fc4386df75
Golang lint / lint (push) Successful in 1m11s
(new): log formatter options
(refactor): API initialism names

(tests): logger format coverage

(doc): updated public names
2026-04-28 16:18:14 +03:00

85 lines
2.0 KiB
Go

package utils
import (
"os"
"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
if os.Getenv("DEBUG") == "true" {
level = sneklog.DEBUG
}
return level
}
// CreateLogger creates a logger with the shared default policy:
// JSON stdout output, provided prefix, and provided level.
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)
}
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 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)
}
return logger, nil
}