Fern Versions Save

Simple, efficient logging for Rust

fern-0.5.2

6 years ago
  • Re-add compatibility for rust versions 1.16.0+, and add CI testing with rustc 1.16.0 to ensure this is kept in the future.
  • Add some more general documentation updates and clarity increases.
  • Add a CHANGELOG.md which mirrors git tag releases.
  • Update documentation links to point to docs.rs rather than custom hosted documentation.
  • Fix ColoredLevelConfig::default being an inherent method rather than an implementation of the Default trait.
  • Add direct support for the syslog crate under the "syslog-3" feature flag.
    • Add a module worth of documentation for using fern with syslog.

fern-0.5.1

6 years ago
  • Re-add support for colored log levels with the 'colored' feature
    • This was initially implemented in fern 0.4.4 by @nihilus, but support was accidentally dropped in fern 0.5.0.
  • Fix the ability to run tests on windows, and refactor integration tests for developer clarity
  • Update documentation for clarity

Short list of changes in 0.5.0:

  • Updated from log 0.3 to log 0.4. Both are interoperable, but using log 0.4 provides a much cleaner log interface for fern to use internally
  • Removed fern::FernLog.
  • Renamed fern::color::ColoredLogLevelConfig to ColoredLevelConfig
  • Greatly simplified testing

fern-0.5.0

6 years ago
  • Update from log 0.3 to log 0.4. Both log versions are interoperable, but line numbers from libraries using 0.4 won't show up in binaries with recievers using log 0.4.
    • To clarify: both fern 0.4 and 0.5 will work perfectly with all libraries, but line numbers will always be 0 if you use fern 0.4 and log 0.4.
  • Remove fern::FernLog. With log 0.4, log records can be constructed directly, and fern loggers can now recieve just a record rather than a record and the formatted display string.
  • Notable changes in the log crate: log::LogLevel is renamed to log::Level, and log::LogLevelFilter is renamed to log::LevelFilter.
  • fern::color::ColoredLogLevelConfig has been renamed to fern::color::ColoredLevelConfig to match log crate renamings.
  • fern tests have been greatly simplified with the new support for creating log records manually. it's now possible to just run "cargo test" and test all of fern's functionality.

fern-0.4.3

6 years ago
  • Add support for sending to an std::sync::mpsc::Sender as a log output

fern-0.4.2

6 years ago
  • Documentation hotfix after a too-early release of version 0.4.1

fern-0.4.1

6 years ago
  • Lots of documentation tweaks and reworking
  • Add CONTRIBUTING file and update README to invite new contributors
  • Improve example application to be more realistic
  • A few small internal improvements, mostly code cleanup here

fern-0.4.0

6 years ago
  • Rework API surface to be builder-based for simpler configuration

    • Rename DispatchConfig to Dispatch, OutputConfig to Output and FernLogger to FernLog
  • Rework inner log structure for more efficiency

    • Different outputs are now stored in an enum rather than every sublogger being a Box<FernLog> with dynamic dispatch
    • Remove LogError; handle errors within individual loggers now - and only within loggers which actually need it
    • Remove unnecessary wrapping of streams with an Arc (now just uses Mutex for File streams)
    • Remove unnecessary wrapping of Stdout and Stderr streams with a Mutex, when they are already synchronized
    • Pass around just &fmt::Arguments + &log::LogRecord instead of passing each individual LogRecord part
  • Move opening of files and stdout/stderr from configuration "building" to configuring

    • Instead of taking OpenOptions, log configuration now just takes an already-opened std::io::File object
    • fern::InitError is now a convenience API, and is never returned from any fern APIs
  • Redo formatting to work without allocation - formatting closures now finish with a callback rather than returning a value

  • Update examples to use chrono instead of the time crate

    • This removes another extra allocation - chrono can format time directly to a writer, without allocating intermediate the result to a String
  • Add much more documentation: almost every builder method has a full example, and all features should be thoroughly explained

  • Add appveyor and travis-ci badges to README and Cargo.toml

fern-0.3.5

6 years ago
  • Build changes to .travis.yml
  • Add html_root_url doc attribute
  • Add file_with_line_sep and file_with_options_and_line_sep configuration construction options to allow specifying a line separator other than the default '\n'

fern-0.3.4

6 years ago
  • Update for rustc version e9080ec39 (1.0.0-beta.2)
  • Update to use no_test to ignore doc tests, rather than ignore
  • Remove all stability attributes on public types
  • Add rust version matrix for testing on travis, to test on beta as well as nightly builds

fern-0.3.3

6 years ago
  • Update for rustc version 9854143cb (1.0.0-beta)
  • Derive Clone for all types deriving Copy
  • Update docs a bit for that switch to time crate
  • Switch to time crate instead of chrono for tests, as chrono hasn't updated for rustc 1.0.0-beta yet.
  • Instead of implementing a pseudo-time crate as a workaround for https://github.com/rust-lang/cargo/issues/1474, just disable the doc test, and copy the code to a separate file in tests/