(new): add threshold-based log level filtering and docs
Golang lint / lint (push) Successful in 1m36s
Golang lint / lint (push) Successful in 1m36s
- 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
This commit is contained in:
+32
-3
@@ -71,6 +71,10 @@ func main() {
|
||||
|
||||
Важно: в текущей модели уровней `Level(sneklog.FATAL)` пропускает `INFO`, `WARN`, `ERROR` и `FATAL`, но не `DEBUG`. Чтобы включить все сообщения, используйте `Level(sneklog.DEBUG)`.
|
||||
|
||||
Если нужна классическая threshold-фильтрация, включите `SetThresholdMode(true)` и
|
||||
задавайте уровни через `NewThresholdLogLevel(...)` или
|
||||
`NewThresholdLogLevelWithColors(...)`.
|
||||
|
||||
## Writer'ы и владение
|
||||
|
||||
`Logger.Close()` закрывает только writer'ы, которые логгер создал сам:
|
||||
@@ -142,6 +146,29 @@ access := sneklog.NewInfoLogLevelWithColors("access", sneklog.FgCyan, sneklog.Bg
|
||||
audit := sneklog.NewWarnLogLevel("audit")
|
||||
```
|
||||
|
||||
Эти helper'ы сохраняют legacy severity index для обратной совместимости и
|
||||
одновременно выставляют значения threshold по умолчанию:
|
||||
|
||||
- `INFO`: `th=10`
|
||||
- `WARN`: `th=20`
|
||||
- `ERROR`: `th=30`
|
||||
- `FATAL`: `th=40`
|
||||
- `DEBUG`: `th=0`
|
||||
|
||||
Чтобы явно создавать уровни для threshold-режима:
|
||||
|
||||
```go
|
||||
trace := sneklog.NewThresholdLogLevelWithColors(4, 5, "trace", sneklog.FgHiBlack, sneklog.BgNone)
|
||||
audit := sneklog.NewThresholdLogLevel(1, 25, "audit")
|
||||
|
||||
logger := sneklog.NewLogger().
|
||||
SetLevel(audit).
|
||||
SetThresholdMode(true)
|
||||
|
||||
logger.Print(trace, "verbose trace") // будет отфильтровано
|
||||
logger.Print(audit, "audit event") // будет записано
|
||||
```
|
||||
|
||||
Для HTTP-методов доступны готовые уровни:
|
||||
|
||||
```go
|
||||
@@ -149,9 +176,11 @@ level := sneklog.LogLevelForMethod(http.MethodPost)
|
||||
logger.Print(level, "POST /users")
|
||||
```
|
||||
|
||||
Если нужно сравнить только severity, используйте `SameLevel`. Если нужно
|
||||
полное совпадение конфигурации уровня, включая цвета и атрибуты, используйте
|
||||
`Equal`.
|
||||
При сравнении уровней:
|
||||
|
||||
- используйте `SameLevel`, если важен только legacy severity index;
|
||||
- используйте `SameThreshold`, если важна только threshold-фильтрация;
|
||||
- используйте `Equal`, если нужно полное совпадение конфигурации, включая threshold, цвета и атрибуты.
|
||||
|
||||
## Замена сообщений
|
||||
|
||||
|
||||
Reference in New Issue
Block a user