REPOSITORY / ScuroNeko/SNekLog

Releases

RELEASES REPOSITORY
  • v2.0.0 d534f92d48

    2.0.0 Stable

    ScuroNeko released this 2026-04-24 15:43:14 +03:00 | 8 commits to main since this release

    Highlights

    • Renamed the public Go package from slog to sneklog to avoid confusion with the standard library log/slog package.
    • Moved the module path to git.scuroneko.dev/scuroneko/slog/v2 for 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/color dependency tree.
    • Formatters: a new way do display your logs!

    Breaking Changes

    • Import paths must use the /v2 module suffix:
    import sneklog "git.scuroneko.dev/scuroneko/slog/v2"
    
    • Package references should use sneklog instead of slog.
    • Removed Logger.PrintTime and Logger.PrintTraceback; configure output through writer formatters instead.
    • Changed text writer constructors:
      • CreateTextWriter(w, printTraceback, printTime) is now CreateTextWriter(w).
      • CreateTextFileWriter(path, printTraceback, printTime) is now CreateTextFileWriter(path).
      • CreateTextStdoutWriter(printTraceback, printTime) is now CreateTextStdoutWriter().
    • Removed the old text formatting helpers: BuildString, FormatTime, FormatTraceback, and FormatFullTraceback.
    • JSON time values are now formatted through the configured formatter and stored as strings in LoggerJsonMessage.

    Added

    • Formatter for configurable message layouts, timestamp layouts, traceback layouts, separators, and color behavior.
    • DefaultTextFormatter and DefaultJsonFormatter defaults for text and JSON writers.
    • LoggerTextWriter.SetFormatter and LoggerJsonWriter.SetFormatter.
    • Strftime-like timestamp format constants such as RFC3339, Kitchen, DateTime, DateOnly, and TimeOnly.
    • Built-in color types and helpers:
      • FgColor, BgColor, and Attribute.
      • 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 DefaultTextFormatter instead of the old hard-coded string builder.
    • JSON output defaults to DefaultJsonFormatter and can now format the JSON message field through Formatter.
    • Newline semantics are normalized before text and JSON formatting, so trailing \n controls 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/color
      • github.com/mattn/go-colorable
      • github.com/mattn/go-isatty
      • golang.org/x/sys

    Fixed

    • NewFormatter() now returns a fresh copy instead of mutating DefaultTextFormatter.
    • Formatter.FormatMessage no longer panics when called with an empty traceback.
    • Placeholder-looking text inside log messages, such as %L or %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