Tags give the ability to mark specific points in history as being important
-
v1.7.1
20d88ced · ·slogging v1.7.1 — the env-override list was missing one AddSourceEnvVar was absent from the paragraph naming the overrides, making source reporting look like it had none. No code changed.
-
v1.7.0
dedfb2d4 · ·slogging v1.7.0 — the handler API says what it does MultiWriterHandler was never a multi-writer: two writers, routed by level. handlers.Handler is that thing named honestly, with several writers per stream now actually available via Stdout()/Stderr() options, and the split point a parameter rather than a hardcoded branch. AddSink and SetOutput are now separate calls. Adding a second console handler used to print every line twice, and replacing it used to delete your sinks. Fixes a runtime log level that never took effect: the level is a slog.Leveler resolved per check, so a *slog.LevelVar bumped later works as documented. Breaking, deliberately shipped in v1 -- nothing outside this repo imports it, so a /v2 path would cost a second import sweep to protect nobody.
-
v1.6.1
4b3e237c · ·slogging v1.6.1 — the configured line names slogconf The debug record slogconf emits about itself was still prefixed `slog-configurator:` after the rename. It now reads `slogconf: configured`. Its structured fields (level, format, addSource) are unchanged, so anything filtering on those keeps matching — only the message text moved.
-
v1.6.0
f55baf48 · ·slogging v1.6.0 — renamed from slog-configurator github.com/psyb0t/slog-configurator is now github.com/psyb0t/slogging. The configurator lives at slogconf/, logring at handlers/logring/, and a Loki handler arrives at handlers/loki/ from common-go. Every exported name is unchanged, so migrating is a find-and-replace on import paths: _ "github.com/psyb0t/slog-configurator" -> _ ".../slogging/slogconf" ".../slog-configurator/logring" -> ".../slogging/handlers/logring" "github.com/psyb0t/common-go/slogging/loki" -> ".../slogging/handlers/loki" Versions through slog-configurator v1.5.0 keep resolving under the old path. The Loki handler drops its config-loader and utility-module dependencies and reads the same SLOGGING_LOKI_URL / SLOGGING_LOKI_APPNAME through the standard library. Runtime dependencies are ctxerrors and nothing else.
-
v1.5.0
9025faed · ·slog-configurator v1.5.0 — Size and Len logring.Handler.Size() reports the bytes the retained records occupy, and Len() reports how many records that is. Stats already returned both alongside the drop count; these are the single-value forms, so reading one number no longer means destructuring a three-value return. Size is the number the ring bounds itself by, so it is what to compare against Options.MaxBytes and what decides when eviction starts. It counts the line, the message and the attributes -- everything an entry retains. A record refused for exceeding MaxRecordBytes is counted by neither.
-
v1.4.0
93ab9e88 · ·slog-configurator v1.4.0 — Search returns a page and its total logring.Handler.Search now returns Page{Entries, Total, Offset} instead of []Entry, with Total counted before Limit and Offset apply -- in the same locked walk that collects the entries. Taking the total from a separate Count call means two locks, so on a live ring it can describe a ring the page did not come from and paging can skip or repeat records. Only the ring can hold one lock across both reads. Migration: append .Entries at existing call sites. Cost: a full walk, since the total is unknowable without visiting every entry. Count, Tail, Clear and Stats are unchanged. -
v1.3.0
f0b22650 · ·slog-configurator v1.3.0 — searchable log ring logring can now be searched by structured attribute, not just by substring of the formatted line. Attributes are captured from the slog.Record when it is handled rather than parsed back out, so field search behaves identically in text mode and in JSON, and it picks up attributes bound earlier through slog.Logger.With -- which live on the inner handler and never appear on the record. Grouped attributes flatten to dotted keys. SearchOptions also gains Exclude, Match (regexp), Until, Levels, Offset and Ascending; Count, Tail and Clear join Search and Stats. Three fixes: a record larger than MaxBytes used to be admitted and then evict the entire ring, counting as neither stored nor dropped -- MaxRecordBytes is now clamped to MaxBytes so it is refused up front. The stored line no longer carries the trailing newline it never needed. The byte budget now counts everything an entry retains, not only the formatted line.
-
v1.2.1
03a0e84c · ·slog-configurator v1.2.1 — README only The feature list now mentions what v1.2.0 added: caller-named environment variables via Init(Options), and the logring in-memory ring. Both had their own sections but were missing from the list a reader skims first. Added a table of contents; the README had grown past the point where anything below the fold is findable. No library code changed.
-
v1.2.0
986ddce9 · ·slog-configurator v1.2.0 — your env var names, plus logring Init(Options) lets a caller name the environment variables this package reads. LOG_LEVEL / LOG_FORMAT / LOG_ADD_SOURCE stay the defaults, and only the names you give are consulted, so a stray variable cannot override yours. Options moves the fallbacks too. The zero Options is the previous behaviour exactly, so the blank import is unaffected. The names used to live in struct tags -- fixed at compile time -- so changing them meant copying the package. logring is a bounded in-memory ring of recent records, an slog.Handler that stacks onto the fan-out so a process can search its own logs in-process. Bounded by bytes rather than record count, drops oversized records rather than letting them eat the ring, INFO and above by default. AddHandler now reports whether it stacked onto this package's fan-out. Existing call sites compile unchanged -- discarding a result is legal Go, and there is a compile test pinning the shapes the dependent repos use. gonfiguration is no longer a dependency; the three settings are read from the environment directly.
-
-
-
-
-