(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:
2026-04-24 15:43:14 +03:00
parent 14b787710c
commit d534f92d48
18 changed files with 845 additions and 171 deletions
+13 -15
View File
@@ -1,4 +1,4 @@
# slog
# SNekLog (ScuroNeko Logger)
Небольшой структурированный логгер для Go с текстовым и JSON-выводом, несколькими writer'ами и настраиваемыми traceback-метаданными.
@@ -17,7 +17,7 @@ English version: [README.md](README.md)
## Установка
```bash
go get git.scuroneko.dev/scuroneko/slog
go get git.scuroneko.dev/scuroneko/slog/v2
```
## Быстрый старт
@@ -28,15 +28,13 @@ package main
import (
"log"
"git.scuroneko.dev/scuroneko/slog"
"git.scuroneko.dev/scuroneko/slog/v2"
)
func main() {
logger := slog.CreateLogger().
logger := sneklog.CreateLogger().
Prefix("API").
Level(slog.DEBUG).
PrintTraceback(true).
JsonPretty(true).
Level(sneklog.DEBUG).
AddReplacer("SOME_SECRET", "<redacted>")
text := logger.CreateTextStdoutWriter()
@@ -64,12 +62,12 @@ func main() {
`CreateLogger()` создает логгер со следующими настройками:
- `Prefix("LOG")`
- `Level(slog.FATAL)`
- `PrintTime(true)`
- `PrintTraceback(false)`
- `Level(sneklog.FATAL)`
- `JsonPretty(false)`
- текстовый formatter: `sneklog.DefaultTextFormatter`
- JSON formatter: `sneklog.DefaultJsonFormatter`
Важно: в текущей модели уровней `Level(slog.FATAL)` пропускает `INFO`, `WARN`, `ERROR` и `FATAL`, но не `DEBUG`. Чтобы включить все сообщения, используйте `Level(slog.DEBUG)`.
Важно: в текущей модели уровней `Level(sneklog.FATAL)` пропускает `INFO`, `WARN`, `ERROR` и `FATAL`, но не `DEBUG`. Чтобы включить все сообщения, используйте `Level(sneklog.DEBUG)`.
## Writer'ы и владение
@@ -92,10 +90,10 @@ func main() {
Текстовый writer формирует записи вида:
```text
[API] [INFO] [main.go:main:27] [17.03.26 14:05:09] service started
2026-03-17T14:05:09+03:00 info API: service started
```
Поле traceback появляется только если включен `PrintTraceback(true)`.
Используйте `SetFormatter` у writer'а, чтобы настроить timestamp'ы, traceback-поля, цвета и шаблон сообщения.
JSON writer записывает объект со следующими полями:
@@ -125,8 +123,8 @@ JSON writer записывает объект со следующими поля
как запись попадет в writer'ы. Правила замены применяются в порядке добавления.
```go
logger := slog.CreateLogger().
Level(slog.DEBUG).
logger := sneklog.CreateLogger().
Level(sneklog.DEBUG).
AddReplacer("SOME_SECRET", "<redacted>").
AddReplacer("user@example.com", "<email>")