2017-12-24 22:07:43 +00:00
|
|
|
# Change Log
|
|
|
|
|
|
|
|
## [Unreleased]
|
|
|
|
|
|
|
|
## [0.4.0] - 2017-12-24
|
|
|
|
|
|
|
|
The changes in this release include cleanup of some obscure functionality and
|
|
|
|
a more robust public API designed to support bridges to other logging
|
|
|
|
systems, and provide more flexibility to new features in the future.
|
|
|
|
|
|
|
|
### Compatibility
|
|
|
|
|
|
|
|
Vast portions of the Rust ecosystem use the 0.3.x release series of log, and
|
|
|
|
we don't want to force the community to go through the pain of upgrading
|
|
|
|
every crate to 0.4.x at the exact same time. Along with 0.4.0, we've
|
|
|
|
published a new 0.3.9 release which acts as a "shim" over 0.4.0. This will
|
|
|
|
allow crates using either version to coexist without losing messages from one
|
|
|
|
side or the other.
|
|
|
|
|
|
|
|
There is one caveat - a log message generated by a crate using 0.4.x but
|
|
|
|
consumed by a logging implementation using 0.3.x will not have a file name or
|
|
|
|
module path. Applications affected by this can upgrade their logging
|
|
|
|
implementations to one using 0.4.x to avoid losing this information. The
|
|
|
|
other direction does not lose any information, fortunately!
|
|
|
|
|
|
|
|
**TL;DR** Libraries should feel comfortable upgrading to 0.4.0 without
|
|
|
|
*treating that as a breaking change. Applications may need to update their
|
|
|
|
*logging implementation (e.g. env-logger) to a newer version using log 0.4.x
|
|
|
|
*to avoid losing module and file information.
|
|
|
|
|
|
|
|
### New
|
|
|
|
|
|
|
|
* The crate is now `no_std` by default.
|
|
|
|
* `Level` and `LevelFilter` now implement `Serialize` and `Deserialize` when the `serde` feature is
|
|
|
|
enabled.
|
|
|
|
* The `Record` and `Metadata` types can now be constructed by third-party code via a builder API.
|
|
|
|
* The `logger` free function returns a reference to the logger implementation. This, along with the
|
|
|
|
ability to construct `Record`s, makes it possible to bridge from another logging framework to
|
|
|
|
this one without digging into the private internals of the crate. The standard `error!` `warn!`,
|
|
|
|
etc, macros now exclusively use the public API of the crate rather than "secret" internal APIs.
|
|
|
|
* `Log::flush` has been added to allow crates to tell the logging implementation to ensure that all
|
|
|
|
"in flight" log events have been persisted. This can be used, for example, just before an
|
|
|
|
application exits to ensure that asynchronous log sinks finish their work.
|
|
|
|
|
|
|
|
### Removed
|
|
|
|
|
|
|
|
* The `shutdown` and `shutdown_raw` functions have been removed. Supporting shutdown significantly
|
|
|
|
complicated the implementation and imposed a performance cost on each logging operation.
|
|
|
|
* The `log_panics` function and its associated `nightly` Cargo feature have been removed. Use the
|
|
|
|
[log-panics](https://crates.io/crates/log-panics) instead.
|
|
|
|
|
|
|
|
### Changed
|
|
|
|
|
|
|
|
* The `Log` prefix has been removed from type names. For example, `LogLevelFilter` is now
|
|
|
|
`LevelFilter`, and `LogRecord` is now `Record`.
|
|
|
|
* The `MaxLogLevelFilter` object has been removed in favor of a `set_max_level` free function.
|
|
|
|
* The `set_logger` free functions have been restructured. The logger is now directly passed to the
|
|
|
|
functions rather than a closure which returns the logger. `set_logger` now takes a `&'static
|
|
|
|
Log` and is usable in `no_std` contexts in place of the old `set_logger_raw`. `set_boxed_logger`
|
|
|
|
is a convenience function which takes a `Box<Log>` but otherwise acts like `set_logger`. It
|
|
|
|
requires the `std` feature.
|
|
|
|
* The `file` and `module_path` values in `Record` no longer have the `'static` lifetime to support
|
|
|
|
integration with other logging frameworks that don't provide a `'static` lifetime for the
|
|
|
|
equivalent values.
|
|
|
|
* The `file`, `line`, and `module_path` values in `Record` are now `Option`s to support integration
|
|
|
|
with other logging frameworks that don't provide those values.
|
|
|
|
|
|
|
|
### In the Future
|
|
|
|
|
|
|
|
* We're looking to add support for *structured* logging - the inclusion of extra key-value pairs of
|
|
|
|
information in a log event in addition to the normal string message. This should be able to be
|
|
|
|
added in a backwards compatible manner to the 0.4.x series when the design is worked out.
|
|
|
|
|
|
|
|
## Older
|
|
|
|
|
|
|
|
Look at the [release tags] for information about older releases.
|
|
|
|
|
2017-12-24 22:09:02 +00:00
|
|
|
[Unreleased]: https://github.com/rust-lang-nursery/log/compare/0.4.0...HEAD
|
|
|
|
[0.4.0]: https://github.com/rust-lang-nursery/log/compare/0.3.8...0.4.0
|
|
|
|
[release tags]: https://github.com/rust-lang-nursery/log/releases
|