FILE / ScuroNeko/SNekLog

RELEASE_NOTES.md

Исходный файл и его история в репозитории.
FILE e6d15b530f892fe196da6203ba9383e21c5548fc
Files
SNekLog/RELEASE_NOTES.md
T
ScuroNeko e6d15b530f
Golang lint / lint (push) Successful in 1m36s
(new): add threshold-based log level filtering and docs
- add threshold-aware LogLevel constructors
- add Logger.SetThresholdMode and SameThreshold
- preserve legacy SameLevel behavior for compatibility
- extend tests for threshold mode and compatibility
- update README and release notes for v2.2.0
2026-04-28 09:45:40 +03:00

8.7 KiB

Unreleased (planned v2.2.0)

This release expands the public LogLevel API, adds optional threshold-based filtering alongside the legacy severity ordering, and improves documentation and test coverage.

Added

  • Added dedicated log level constructors:
    • NewInfoLogLevel
    • NewInfoLogLevelWithColors
    • NewWarnLogLevel
    • NewWarnLogLevelWithColors
    • NewErrorLogLevel
    • NewErrorLogLevelWithColors
    • NewFatalLogLevel
    • NewFatalLogLevelWithColors
    • NewDebugLogLevel
    • NewDebugLogLevelWithColors
  • Added threshold-aware log level constructors:
    • NewThresholdLogLevel
    • NewThresholdLogLevelWithColors
  • Added HTTP method-specific predefined log levels:
    • HTTPGetLevel
    • HTTPHeadLevel
    • HTTPPostLevel
    • HTTPPutLevel
    • HTTPPatchLevel
    • HTTPDeleteLevel
    • HTTPOptionsLevel
    • HTTPConnectLevel
    • HTTPTraceLevel
    • HTTPUnknownLevel
  • Added LogLevelForMethod(method string) LogLevel to map HTTP methods to predefined log levels.
  • Added Logger.Printf(level, format, args...) for formatted logging with an explicit log level.
  • Added Logger.SetThresholdMode(bool) to switch filtering from legacy severity-index ordering to threshold-based ordering.
  • Added LogLevel.SameLevel, LogLevel.SameThreshold, and LogLevel.Equal for severity-only, threshold-only, and full level comparisons.

Changed

  • Refactored log level definitions into a dedicated levels.go file.
  • Unified Logger.Print and Logger.Println through a shared internal implementation without changing their behavior.
  • Common helper constructors such as NewInfoLogLevel now also assign threshold values while preserving legacy severity indexes.
  • LogLevel.Equal now includes threshold configuration in full equality checks.
  • Expanded test coverage for Logger.Printf, HTTP level mapping, constructor behavior, threshold filtering, and backward compatibility.

Documentation

  • Improved GoDoc coverage for exported types, constructors, formatters, colors, HTTP helpers, and time layouts.
  • Documented threshold mode, threshold-aware constructors, level comparison helpers, and explicit-level formatted logging.
  • Expanded inline documentation for formatter tokens and default formatter behavior.
  • Updated English and Russian README files with threshold-mode examples and comparison guidance.

Compatibility

  • No breaking API changes.
  • Existing Print, Println, predefined levels, Level/SetLevel, and color APIs remain compatible.
  • Legacy severity ordering remains the default; threshold filtering is enabled only when SetThresholdMode(true) is called.
  • SameLevel remains severity-only for backward compatibility, even when levels carry threshold metadata.

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 slog to sneklog to avoid confusion with the standard library log/slog package.
  • Moved the module path to git.scuroneko.dev/scuroneko/sneklog/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 "git.scuroneko.dev/scuroneko/sneklog/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/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.Print no longer panics when called with no message arguments.
  • LoggerJsonWriter.Print now treats a trailing newline at the end of the last message as newline semantics and does not include that newline in the JSON message field.
  • 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/color from v1.18.0 to v1.19.0
    • github.com/mattn/go-isatty from v0.0.20 to v0.0.21
    • golang.org/x/sys from v0.42.0 to v0.43.0

Compatibility

No breaking API changes are intended in this release. The public LoggerWriter interface continues to accept messages ...any.