FILE / ScuroNeko/Laniakea
utils/utils.go
Исходный файл и его история в репозитории.
Golang lint / lint (push) Successful in 1m11s
(refactor): API initialism names (tests): logger format coverage (doc): updated public names
85 lines
2.0 KiB
Go
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
|
|
}
|