Skip to content
Dawid Ciężarkiewicz edited this page Apr 12, 2017 · 28 revisions

Major changes overview

  • Unified and simplified logging macros structure and ordering.
  • Added logging Record tags
  • Refactored key-value pairs traits and structures and overall handling.
    • It's now possible to impl KV for MyStruct.
    • kv! can be used to create on stack key-value list.
    • KV-implementing data can appear on the key-value list directly.
  • Support chaining of OwnedKVLists. Existing Logger can be used as a Drain to allow custom handling logic for a part of the logging hierarchy.
  • Added associated Ok type to Drain.
  • Support for Drains unwind safety.
  • Refactored Record to optimize performance on async operations.
  • slog-extra has been renamed to slog-async since that's the only functionality it contained.
  • slog-stream is obsoleted and won't be used in slog v2 at all. It was a wrong abstraction. Decorators functionality was moved to slog-term.
  • slog-term provides open Decorator traits to allow multiple terminal / file writing backends.
  • slog-term default Decorators use term crate and should work correctly on all supported OSes.
  • DrainExt has been removed and utility methods moved directly to Drain
  • slog-stdlog utilizes slog-scope directly.
  • Support for "typed" Loggers to allow squeezing last drops of performance possible, at the cost of T in Logger<T>.

Status

Core slog v2 crate is stable. Majority of core feature crates are ready and working, and will have stable releases after getting more confidence in their APIs.

Your feedback and opinions can speed up the stabilization process.

Per-crate status

This list might not be up to date. Feel free to edit.

# all core improvements and ideas implemented; hopefully no more breaking changes coming;
slog = "2.0.0-3.1"
slog-async = "2.0.0-3.0"
slog-scope = "2.0.0-3.0"
slog-json = "2.0.0-3.0"
slog-bunyan = "2.0.0-3.0"
# some breaking changes still possible
slog-term = "2.0.0-3.0"
slog-stdlog = "2.0.0-0.2"
slog-envlogger = "2.0.0-1.0"
slog-atomic = "2.0.0-1.0"
slog-syslog = "0.10.0"
slog-config = "0.3.0"
# still need porting
slog-journald
slog-cadence
slog-html
slog-kvfilter
slog-example-lib
# obsoleted
slog-extra - contained just `async` so is not `slog-async`
slog-stream - use `Decorator` in slog-term instead
slog-serde - wasn't useful enough
slog-scope-stdlog - use slog-scope instead

Using slog v2 and versioning

Slog v2 ecosystem was (and is stil) being developed in the 0.x.y pre-release model. slog 2.0.0-1.0 should be treated as 0.1.0 version was, just working toward 2.0.0 release.

It's recommended to use the following to specify the dependency on pre-release versions of crates ported to slog. eg.

slog-term = ~2.0.0-3"