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
  • 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 is considered ready.

Latest set of ported core crates

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

# 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"
Clone this wiki locally