All Projects → daboross → Fern

daboross / Fern

Licence: mit
Simple, efficient logging for Rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Fern

Quill
Asynchronous Low Latency C++ Logging Library
Stars: ✭ 422 (-19.47%)
Mutual labels:  logging, logging-library
Daiquiri
Python library to easily setup basic logging functionality
Stars: ✭ 308 (-41.22%)
Mutual labels:  logging, logging-library
Easyloggingpp
Single header C++ logging library. It is extremely powerful, extendable, light-weight, fast performing, thread and type safe and consists of many built-in features. It provides ability to write logs in your own customized format. It also provide support for logging your classes, third-party libraries, STL and third-party containers etc.
Stars: ✭ 3,032 (+478.63%)
Mutual labels:  logging, logging-library
Json Logging Python
Python logging library to emit JSON log that can be easily indexed and searchable by logging infrastructure such as ELK, EFK, AWS Cloudwatch, GCP Stackdriver
Stars: ✭ 143 (-72.71%)
Mutual labels:  logging, logging-library
Reckless
Reckless logging. Low-latency, high-throughput, asynchronous logging library for C++.
Stars: ✭ 358 (-31.68%)
Mutual labels:  logging, logging-library
Logging
Microsoft Extension Logging implementation for Blazor
Stars: ✭ 165 (-68.51%)
Mutual labels:  logging, logging-library
Scribe
The fastest logging library in the world. Built from scratch in Scala and programmatically configurable.
Stars: ✭ 304 (-41.98%)
Mutual labels:  logging, logging-library
Tracing
Application level tracing for Rust.
Stars: ✭ 1,294 (+146.95%)
Mutual labels:  logging, logging-library
Logstash Logger
Ruby logger that writes logstash events
Stars: ✭ 442 (-15.65%)
Mutual labels:  logging, logging-library
Electron Timber
Pretty logger for Electron apps
Stars: ✭ 337 (-35.69%)
Mutual labels:  logging, logging-library
Izumi
Productivity-oriented collection of lightweight fancy stuff for Scala toolchain
Stars: ✭ 423 (-19.27%)
Mutual labels:  logging, logging-library
Cocoadebug
iOS Debugging Tool 🚀
Stars: ✭ 3,769 (+619.27%)
Mutual labels:  logging, logging-library
Cscore
cscore is a minimal-footprint library providing commonly used helpers & patterns for your C# projects. It can be used in both pure C# and Unity projects.
Stars: ✭ 115 (-78.05%)
Mutual labels:  logging, logging-library
Timber Elixir
🌲 Great Elixir logging made easy
Stars: ✭ 226 (-56.87%)
Mutual labels:  logging, logging-library
Nanolog
Nanolog is an extremely performant nanosecond scale logging system for C++ that exposes a simple printf-like API.
Stars: ✭ 1,710 (+226.34%)
Mutual labels:  logging, logging-library
Log4qt
Log4Qt - Logging for the Qt cross-platform application framework
Stars: ✭ 292 (-44.27%)
Mutual labels:  logging, logging-library
Diary
📑 Zero-dependency, fast logging library for both Node and Browser.
Stars: ✭ 79 (-84.92%)
Mutual labels:  logging, logging-library
Yurnalist
An elegant console reporter, borrowed from Yarn
Stars: ✭ 88 (-83.21%)
Mutual labels:  logging, logging-library
Tslog
📝 tslog - Expressive TypeScript Logger for Node.js.
Stars: ✭ 321 (-38.74%)
Mutual labels:  logging, logging-library
Exceptionless.net
Exceptionless clients for the .NET platform
Stars: ✭ 362 (-30.92%)
Mutual labels:  logging, logging-library

fern

Linux Build Status Windows Build Status Coverage Status

crates.io version badge

Simple, efficient logging for Rust.


Logging configuration is recursively branched, like a fern: formatting, filters, and output can be applied recursively to match increasingly specific kinds of logging. Fern provides a builder-based configuration backing for rust's standard log crate.

//! With fern, we can:

// Configure logger at runtime
fern::Dispatch::new()
    // Perform allocation-free log formatting
    .format(|out, message, record| {
        out.finish(format_args!(
            "{}[{}][{}] {}",
            chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S]"),
            record.target(),
            record.level(),
            message
        ))
    })
    // Add blanket level filter -
    .level(log::LevelFilter::Debug)
    // - and per-module overrides
    .level_for("hyper", log::LevelFilter::Info)
    // Output to stdout, files, and other Dispatch configurations
    .chain(std::io::stdout())
    .chain(fern::log_file("output.log")?)
    // Apply globally
    .apply()?;

// and log using log crate macros!
info!("hello, world!");

Examples of all features at the api docs. See fern in use with this example command line program.


Project Status

The fern project is primarily maintained by myself, @daboross on GitHub. It's a hobby project, but one I aim to keep at a high quality.

Contributing

As this is a hobby project, contributions are very welcome!

The easiest way for you to contribute right now is to use fern in your application, and see where it's lacking. The current library has a solid base, but it lacks features, and I may not anticipate your use cases.

If you have a use case fern does not cover, please file an issue. This is immensely useful to me, to anyone wanting to contribute to the project, and to you as well if the feature is implemented.

If you're interested in helping fix an existing issue, or an issue you just filed, help is appreciated.

See CONTRIBUTING for technical information on contributing.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].