(refactor): prepare breaking v2 API
- rename package to sneklog and move module to /v2 - replace text output flags with writer formatters - remove external color dependencies - update migration notes and coverage
This commit is contained in:
@@ -1,3 +1,94 @@
|
||||
# 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/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:
|
||||
|
||||
```go
|
||||
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:
|
||||
|
||||
```go
|
||||
import "git.scuroneko.dev/scuroneko/slog"
|
||||
|
||||
logger := slog.CreateLogger().
|
||||
Prefix("API").
|
||||
Level(slog.DEBUG).
|
||||
PrintTraceback(true)
|
||||
|
||||
text := logger.CreateTextStdoutWriter()
|
||||
```
|
||||
|
||||
After:
|
||||
|
||||
```go
|
||||
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)
|
||||
```
|
||||
|
||||
# v1.2.0
|
||||
|
||||
## Highlights
|
||||
|
||||
Reference in New Issue
Block a user