FILE / ScuroNeko/SNekLog
RELEASE_NOTES.md
Исходный файл и его история в репозитории.
Golang lint / lint (push) Successful in 42s
- move LogLevel and predefined levels into levels.go - add level-specific constructors for info/warn/error/fatal/debug - add predefined HTTP method log levels and LogLevelForMethod - unify Logger Print/Println internals and add Printf - improve GoDoc coverage for exported APIs
7.5 KiB
7.5 KiB
v2.2.0
This release adds new public APIs for working with log levels, introduces HTTP method-specific log levels, and improves package documentation.
Added
- Added dedicated log level constructors:
NewInfoLogLevelNewInfoLogLevelWithColorsNewWarnLogLevelNewWarnLogLevelWithColorsNewErrorLogLevelNewErrorLogLevelWithColorsNewFatalLogLevelNewFatalLogLevelWithColorsNewDebugLogLevelNewDebugLogLevelWithColors
- Added HTTP method-specific predefined log levels:
HTTPGetLevelHTTPHeadLevelHTTPPostLevelHTTPPutLevelHTTPPatchLevelHTTPDeleteLevelHTTPOptionsLevelHTTPConnectLevelHTTPTraceLevelHTTPUnknownLevel
- Added
LogLevelForMethod(method string) LogLevelto map HTTP methods to predefined log levels. - Added
Logger.Printf(level, format, args...)for formatted logging with an explicit log level.
Changed
- Refactored log level definitions into a dedicated
levels.gofile. - Unified
Logger.PrintandLogger.Printlnthrough a shared internal implementation without changing their behavior.
Documentation
- Improved GoDoc coverage for exported types, constructors, formatters, colors, HTTP helpers, and time layouts.
- Expanded inline documentation for formatter tokens and default formatter behavior.
Compatibility
- No breaking API changes.
- Existing
Print,Println, predefined levels, and color APIs remain compatible.
v2.1.0
This release expands sneklog color customization while preserving compatibility with the v2.0.1 API.
Added
- custom LogLevel constructors with configurable colors
- 256-color and RGB support for LogLevel
- ANSI text attributes on LogLevel such as Bold and Italic
- typed color helpers for foreground/background RGB and 256-color values
- NewLogger, SetName, SetLevel, and SetJSONPretty as clearer preferred APIs
Improved
- text and JSON writer handling of trailing newline semantics
- formatter colorization logic for foreground, background, and attributes
- GoDoc coverage across the public API
- English and Russian README examples and API guidance
Compatibility
- legacy APIs from v2.0.1 remain available as deprecated wrappers
- legacy ColorStringBuilder method signatures were preserved for backward compatibility
- deprecated methods now explicitly document their replacements and planned removal in v3
Fixed
- extra separator/space issues in Println-style output
- attribute slice handling and defensive copying for LogLevel
- color mode precedence when switching between ANSI, 256-color, and RGB modes
v2.0.0
Highlights
- Renamed the public Go package from
slogtosneklogto avoid confusion with the standard librarylog/slogpackage. - Moved the module path to
git.scuroneko.dev/scuroneko/sneklog/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 "git.scuroneko.dev/scuroneko/sneklog/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/sneklog/v2"
logger := sneklog.CreateLogger().
Prefix("API").
Level(sneklog.DEBUG)
formatter := sneklog.NewFormatter().
SetFormat("%t [%L] %N: %m (%B)")
text := logger.CreateTextStdoutWriter().
SetFormatter(formatter)
v1.2.0
Highlights
- Added message replacement with
Logger.AddReplacer(old, new)for masking secrets or normalizing log output. - Preserved the existing
LoggerWriter.Print(...any)contract, so custom writers do not need a signature update. - Improved JSON writer newline handling for messages that already end with
\n.
Added
Logger.AddReplacer(old, new)appends a replacement rule that is applied before records are sent to writers.- README and package GoDoc now document message replacement and include usage examples.
- Tests covering message type preservation for custom writers, JSON empty messages, and JSON trailing newline behavior.
Fixed
LoggerJsonWriter.Printno longer panics when called with no message arguments.LoggerJsonWriter.Printnow treats a trailing newline at the end of the last message as newline semantics and does not include that newline in the JSONmessagefield.- Log messages keep their original argument types for custom writers when no replacement rules are configured.
Changed
- Updated the example program to demonstrate
AddReplacer. - Updated dependencies:
github.com/fatih/colorfromv1.18.0tov1.19.0github.com/mattn/go-isattyfromv0.0.20tov0.0.21golang.org/x/sysfromv0.42.0tov0.43.0
Compatibility
No breaking API changes are intended in this release. The public LoggerWriter interface continues to accept messages ...any.