All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Releases are git-tagged. The submodules (logsentry, goslog) are tagged in
lockstep with the root module, e.g. v1.0.7, logsentry/v1.0.7, goslog/v1.0.7.
1.1.1 - 2026-06-17
- Runnable
Examplefunctions for the primaryLoggerAPI (Example,ExampleLogger) and thelogsubpackage, so the common usage paths appear on pkg.go.dev and are verified bygo test. - Package documentation comment for the
logsubpackage.
- logsentry: bump the indirect
golang.org/x/textdependency from v0.34.0 to v0.37.0, aligning it with thetoolssubmodule.
- A nil
*Loggerno longer panics on the level methods (Trace,Debug,Info,Warn,Error,Fataland theirAt/Ctx/f/fCtxvariants). They now return a nil*Message, honoring the nil-safe contract documented indoc.go. Previously they dereferencedl.configwhile reading the level and crashed with a nil pointer dereference.
- Clarify that duplicate-key prevention applies to keys inherited from the logger, a sub-logger, or the context (the inherited value wins), not to duplicate keys added within a single message chain.
- Fix the
doc.gocontext example to usegolog.NewString(there is nogolog.Strconstructor).
1.1.0 - 2026-06-16
- Breaking: migrate to
getsentry/sentry-gov0.46.2 and Go 1.25; route logging errors throughlogsentry; makegolog.ErrorHandlera thread-safe accessor (#14).golog.ErrorHandlerchanged from a package variable to a getter function: replacegolog.ErrorHandler = fnwithgolog.SetErrorHandler(fn), and read the handler viagolog.ErrorHandler()orgolog.ErrorHandlerOr(fallback). - logsentry: structured log values now populate the Sentry event's
logcontext instead of the removedEvent.Extra; a loggedtypekey is sent astype_(reserved-name remap) (#14). - Bump
securego/gosecto v2.27.1 in thetoolssubmodule (stays on Go 1.25), pulling alonggoogle.golang.org/grpc1.81.1 and assortedgolang.org/x/*andgoogle.golang.org/*updates. - Replace
tag-release.sh(version passed as an argument) withtag-version.sh, which reads the release version from theVERSIONfile.
- UUID parsing now accepts UUID versions 6, 7 and 8.
- Add
CLAUDE.mdwith guidance for AI coding agents working in the repo. - Fix the tag prefix in the redact breaking-change note.
1.0.7 - 2026-04-14
Format.Locationfor fixed-timezone time formatting.
1.0.6 - 2026-04-14
- Tag-driven struct field logging with
omit/redactmodifiers. Timestamptype for flexible log timestamp parsing.
- Move gosec into the
toolssubmodule; expandtest-workspace.sh. - Bump Go to 1.24.9 and update dependencies (incl.
grpc1.79.3).
- Document
TimestampandFormatdefaults in the README.
1.0.5 - 2026-02-12
- Use
v0.0.0-00010101000000-000000000000for locally replaced module versions.
1.0.4 - 2026-02-12
logsentry.WriterConfig: add nil checks for hub and format inNewWriterConfig; handle a nil error inWriteError.- Ensure
WriteErrorimplementations do not panic on a nil error. IsTerminal: add a#nosecdirective for the file-descriptor conversion.
1.0.3 - 2026-02-10
WriterConfig: addmergeWriterConfigsand optimizeuniqueNonNilWriterConfigs.
1.0.2 - 2026-02-03
SubLoggerContext: self-referentialDerivedConfigcausing a stack overflow.
1.0.1 - 2026-01-30
DynDerivedConfig; keepDerivedConfigfast without a mutex.
CallbackWriter: nil pointer dereference in all sliceWritemethods.logsentrywriter: improve panic-recovery error handling; add recovery inCommitMessageandFlushUnderlying.logfile: recoverRotatingWriterafter a failed rotation.
1.0.0 - 2026-01-28
- Initial tagged release: zero-allocation append-style text output,
Timeattrib type for zero-allocationtime.Timelogging, and thetag-releaseversioning script.