#google-cloud #logging #stackdriver #log #google #cargo-toml

stackdriver_logger

A logger for Google's Stackdriver with a cli-friendly fallback for local development

16 releases (8 breaking)

0.8.2 Dec 20, 2022
0.8.1 Nov 14, 2022
0.8.0 Jul 29, 2020
0.7.0 Feb 12, 2020
0.1.4 Jul 31, 2018

#334 in Debugging

Download history 989/week @ 2024-07-21 1292/week @ 2024-07-28 1145/week @ 2024-08-04 1017/week @ 2024-08-11 615/week @ 2024-08-18 629/week @ 2024-08-25 1121/week @ 2024-09-01 1202/week @ 2024-09-08 738/week @ 2024-09-15 589/week @ 2024-09-22 1046/week @ 2024-09-29 747/week @ 2024-10-06 745/week @ 2024-10-13 1051/week @ 2024-10-20 947/week @ 2024-10-27 640/week @ 2024-11-03

3,399 downloads per month
Used in ognibuild

MIT/Apache

19KB
302 lines

Stackdriver logger

A logger for Google's Stackdriver.
By default, in debug mode, we fall back to pretty_env_logger.
In release mode, we output JSON formatted logs compatible with Stackdriver.

Usage

use log::{error, info, trace, debug, warn};

fn main() {
    stackdriver_logger::init_with_cargo!();

    trace!("trace log");
    debug!("debug log");
    info!("info log");
    warn!("warn log");
    error!("error log");
}

Note that the init_with_cargo! macro will include your Cargo.toml in the resulting binary. If you don't want that, check out the docs, a few more initializers are available.

Behavior

When using the above macro, you don't have anything else to do. For other initializers, you may need to provide two environment variables : SERVICE_NAME and SERVICE_VERSION. We're using Cargo's CARGO_PKG_NAME and CARGO_PKG_VERSION as a fallback, but these are only available if you run your application via Cargo.
Check out the docs to see which initializers require environment variables.

Enabling logging

This library accepts a RUST_LOG env variable, it works exactly like in env_logger.
By default, everything is disabled except for error!. To enable all logs for your application :

RUST_LOG=your_application cargo run

For more details, take a look at the env_logger docs.

Feature flags

By default, this crate enables all env_logger defaults features and always pulls pretty_env_logger.
These crates have some heavy dependencies like regex.
If you want smaller builds in production, and don't use fancy env_logger features, you can disable default features for stackdriver_logger like so :

stackdriver_logger = { version = "*", default-features = false, features = ["prod"] }

License

Licensed under either of

Dependencies

~4–13MB
~145K SLoC