Tags

Tags give the ability to mark specific points in history as being important
  • v1.7.1

    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

    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

    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

    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

    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

    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

    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

    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

    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.
  • v1.1.2

    v1.1.2 — CI only: Codeberg mirror, archiving, mirror issue pull-back
  • v1.1.1

    v1.1.1 — restore a green pipeline and the release artifact
  • v1.1.0

    v1.1.0 — a failing handler no longer silences the others
  • v1.0.1

    v1.0.1 — self-hosted badges + Go 1.26 + go fix
  • v1.0.0

    ff0a4ddc · fuckin env* ·
    fuck yeah, slog configs