forestry 1.6.2

A simple cross-platform CLI logging library for Rust
Documentation
# forestry

[![crate version number](https://img.shields.io/crates/v/forestry)](https://crates.io/crates/forestry/)
[![crate download count](https://img.shields.io/crates/d/forestry?label=downloads&color=blue)](https://crates.io/crates/forestry/)
[![GitHub Actions status](https://img.shields.io/github/actions/workflow/status/uptudev/forestry/rust.yml)](https://github.com/uptudev/forestry/actions/workflows/rust.yml)

A simple, efficient, concise, and elegant logging library for Rust.

## Table of Contents

* [Installation]#installation
* [Dependencies]#dependencies
* [Usage]#usage
* [Contributing]#contributing
* [License]#license

## Installation

To install forestry, simply add it to your Rust project via Cargo:

```bash
cargo add forestry
```

## Dependencies

Forestry depends on the `colored` crate for colorized output.

## Usage

Forestry is a simple logging library that allows you to log messages to the console with different levels of severity. Here's an example of how to use it:

`src/main.rs`
```rust
use forestry::prelude::*;

let log = Logger::new();
log.info("This is an info message.");
log.warn("This is a warning message.");
log.error("This is an error message.");
log.success("This is a success message.");
log.critical("This is a critical message.");
```

These calls can also be inlined as follows

`src/main.rs`
```rust
use forestry::prelude::*

let log = Logger::new();
log.info("This is an info message.")
    .warn("This is a warning message.")
    .error("This is an error message.")
    .success("This is a success message.")
    .critical("This is a critical message.");
```

This will output the following to the console:

```
[0000:*] This is an info message.
[0001:~] This is a warning message.
[0002:!] This is an error message.
[0003:+] This is a success message.
[0004:%] This is a critical message.
```

It will also be coloured in most terminals.

All formatting is optional; please see the documentation at [Docs.rs](https://docs.rs/forestry/latest/forestry/index.html), specifically for `crate::logs::Options`. Optional file output and timer inclusion is also supported via the same `crate::logs::Options` enum.

### Async

Forestry also supports asynchronous logging. To enable this feature, simply add the `async` feature to `forestry`'s declaration in your `Cargo.toml` file.

#### Example

First, add the `async` feature to `forestry` in your `Cargo.toml` file by changing the default declaration to either of the following:

`Cargo.toml`
```toml
[dependencies]
forestry = { version = ">=1.5", features = ["async"] }
```

or

`Cargo.toml`
```toml
[dependencies.forestry]
version = ">=1.5"
features = ["async"]
```

Then, the logger's internal print calls will be asynchronous futures. This is useful for logging in async functions or in async contexts. `await`ing the logger's methods will return the same `&mut Logger` as before, so chaining is still possible (although only by adding `await` to every call).

## Contributing

If you would like to contribute to forestry, please open an issue or submit a pull request.

## License

This code is dual-licensed under either the MIT or Apache 2.0 license, at your option. Please see the `LICENSE` file for more information.