Releases: wrkstrm/WrkstrmLog
Releases · wrkstrm/WrkstrmLog
3.0.0 - Mangrove
Highlights
- Major API cleanup removing legacy “style” surface
- Stronger multi-backend model + clearer runtime selection
- WASM build workflow added; WASM compatibility improved
- Documentation overhaul: tutorials, quickstart, and examples
Breaking Changes
- Remove legacy style APIs
- Delete Log.Style enum
- Delete Log.style property
- Delete init(style:) constructor
- Remove aliases
- Delete FanoutLog and TeeLog aliases; use LogGroup
- Injection defaults
- Remove legacy single-backend fallback state; when not explicitly set, backend resolves to platform default
Migration Guide (quick)
- Constructors
- init(style: .os) → init(backends: [OSLogBackend()])
- init(style: .swift) → init(backends: [SwiftLogBackend()])
- init(style: .print) → init(backends: [PrintLogBackend()])
- Runtime selection
- Log.Inject.setBackends([.os, .swift]) for ordered kinds (primary = index 0)
- Log.Inject.setBackend(.os) is a convenience for a single kind
- Inspect: Log.Inject.currentBackend()
- Fan-out
- Replace FanoutLog/TeeLog with LogGroup([log1, log2, ...])
Additions
- Multi-backend support documented with examples and tests
- WASM improvements: file/path handling without Foundation and clearer defaults on WASI/wasm32
- New DocC content
- File Logging tutorial
- Tutorials table of contents
- Updated “3.0 changes” article language
Changes
- Backend resolution refined for Foundation/non-Xcode contexts
- Normalized platform constants and minor cleanup across sources
- README redesigned (badges, quick links, feature overview, tutorials)
- Status table updated to show all running workflows, including WASM Build
Fixes and Quality
- Safer logic in Log.Inject when removing kinds
- Hardened tests to parse the last emitted log line (reduces flakiness)
- Minor lints and small correctness tweaks
CI/CD
- New workflow: “WASM Build | WrkstrmLog”
- Renamed/standardized workflow display names (DocC, Swift Format, Build, Test)
- README workflow badges synchronized with Actions
Housekeeping
- License year update
- SPI configuration tweaks
Full Changelog
- Compare 2.2.4 → main: 2.2.4...main
- After tagging v3.0.0, preferred link: 2.2.4...3.0.0
2.2.4
Full Changelog: 2.2.3...2.2.4
2.2.3
2.2.2
Full Changelog: 2.2...2.2.2
2.2.1
Full Changelog: 2.1.0...2.2.1
2.1
2.0.1 - Trace Shades of Green
What's Changed
- Document release naming convention by @rismay in #70
- Fix typo in DocC workflow filename by @rismay in #71
- Use shared swift-format configuration by @rismay in #72
- Replace SwiftLint workflow with SwiftFormat by @rismay in #73
- docs: fix grammar in info log comment by @rismay in #74
- Update Log.swift by @rismay in #75
Full Changelog: 2.0.0...2.0.1
Aspen
Summary
- Global exposure level API – Consumers can now inspect and update the global log threshold via Log.globalExposureLevel, simplifying cross‑library log control
Naming Convention
Starting with this release, each version is nicknamed after a tree species in alphabetical order—a nod to “logging.”
2.0.0 inaugurates the series with “Aspen.” Future versions will continue with names like “Birch,” “Cedar,” and so on.
Expose Global Level
- Add new API to expose global logging level to API consumers.
Public Logs, When Needed
Added
- Global exposure limit to restrict logging output across libraries. Defaults to .critical; call Log.limitExposure(to:) at startup to expose more verbose logs.
- Per‑logger exposure limit with a public maxExposureLevel so individual loggers can opt in to additional verbosity.
- Exposure clamping that ensures raising the global exposure never exceeds any logger’s configured maxExposureLevel.
Removed
- Log.removeExposureLimit; all loggers now require an explicit exposure configuration, preventing accidental emission of higher‑severity logs.
Testing & Quality
- Expanded test coverage verifying exposure‑limit behavior, logger reuse, and filtering across severity levels.