REPOSITORY / ScuroNeko/SNekLog
Releases
-
2.0.0 Stable
released this
2026-04-24 15:43:14 +03:00 | 8 commits to main since this releaseHighlights
- Renamed the public Go package from
slogtosneklogto avoid confusion with the standard librarylog/slogpackage. - Moved the module path to
git.scuroneko.dev/scuroneko/slog/v2for Go module major-version compatibility. - Replaced fixed text writer settings with formatter-based output customization.
- Added built-in ANSI color support and removed the external
github.com/fatih/colordependency tree. - Formatters: a new way do display your logs!
Breaking Changes
- Import paths must use the
/v2module suffix:
import sneklog "git.scuroneko.dev/scuroneko/slog/v2"- Package references should use
snekloginstead ofslog. - Removed
Logger.PrintTimeandLogger.PrintTraceback; configure output through writer formatters instead. - Changed text writer constructors:
CreateTextWriter(w, printTraceback, printTime)is nowCreateTextWriter(w).CreateTextFileWriter(path, printTraceback, printTime)is nowCreateTextFileWriter(path).CreateTextStdoutWriter(printTraceback, printTime)is nowCreateTextStdoutWriter().
- Removed the old text formatting helpers:
BuildString,FormatTime,FormatTraceback, andFormatFullTraceback. - JSON
timevalues are now formatted through the configured formatter and stored as strings inLoggerJsonMessage.
Added
Formatterfor configurable message layouts, timestamp layouts, traceback layouts, separators, and color behavior.DefaultTextFormatterandDefaultJsonFormatterdefaults for text and JSON writers.LoggerTextWriter.SetFormatterandLoggerJsonWriter.SetFormatter.- Strftime-like timestamp format constants such as
RFC3339,Kitchen,DateTime,DateOnly, andTimeOnly. - Built-in color types and helpers:
FgColor,BgColor, andAttribute.ColorStringBuilder.- Level color getters/setters on
LogLevel.
- Tests covering formatter defaults, empty traceback placeholders, literal
%sequences in messages, color controls, and JSON newline semantics.
Changed
- Text output defaults to
DefaultTextFormatterinstead of the old hard-coded string builder. - JSON output defaults to
DefaultJsonFormatterand can now format the JSONmessagefield throughFormatter. - Newline semantics are normalized before text and JSON formatting, so trailing
\ncontrols record termination without becoming part of the message. - Text color output is enabled by default only for stdout/stderr.
- Example code now demonstrates custom formatters and color configuration.
- Go dependencies were simplified by removing:
github.com/fatih/colorgithub.com/mattn/go-colorablegithub.com/mattn/go-isattygolang.org/x/sys
Fixed
NewFormatter()now returns a fresh copy instead of mutatingDefaultTextFormatter.Formatter.FormatMessageno longer panics when called with an empty traceback.- Placeholder-looking text inside log messages, such as
%Lor%s, is preserved literally. SetColorOutput(false)disables color output.SetColorOnlyStdout(false)allows color output for non-stdout writers.
Migration
Before:
import "git.scuroneko.dev/scuroneko/slog" logger := slog.CreateLogger(). Prefix("API"). Level(slog.DEBUG). PrintTraceback(true) text := logger.CreateTextStdoutWriter()After:
import sneklog "git.scuroneko.dev/scuroneko/slog/v2" logger := sneklog.CreateLogger(). Prefix("API"). Level(sneklog.DEBUG) formatter := sneklog.NewFormatter(). SetFormat("%t [%L] %N: %m (%B)") text := logger.CreateTextStdoutWriter(). SetFormatter(formatter)Downloads
- Renamed the public Go package from