CloudWatch Logging SDK for Rust

The CloudWatch Logging SDK for Rust provides a simple and efficient way to log to Amazon CloudWatch.

Features

Installation

Add the following dependency to your Cargo.toml file:

toml [dependencies] cloudwatch-logging = "0.2.5"

Breaking Changes

Version 0.2.0

The api is now stable and will not change unless there is a major version bump. Migrating to the new version requires very little effort, everything remained the same outside the entry point.

Usage

```rust use cloudwatch_logging::prelude::*;

async fn example() -> Result<(), LoggerError> { let logger = LoggerHandle::setup( "test-group", // log group "test-stream", // log stream 20, // batch size Duration::from_secs(5), // flush interval ).await?;

logger.info("Hello, world!".to_string()).await?;
logger.error("Something went wrong!".to_string()).await

}

cloudwatchlogging::doctest!(example); ```

Logging Panics

```rust use cloudwatch_logging::prelude::*;

async fn example() -> Result<(), LoggerError> { let logger = LoggerHandle::setup( "test-group", // log group "test-stream", // log stream 20, // batch size Duration::from_secs(5), // flush interval ).await?;

logger.log_panics();  // future panics will be logged to cloudwatch

panic!("This will be logged to cloudwatch!");

Ok(())

}

cloudwatchlogging::doctest_panics!(example, "This will be logged to cloudwatch!"); ```

singleton Feature

```rust use cloudwatch_logging::prelude::*;

[cfg(feature = "singleton")]

async fn example() -> Result<(), LoggerError> { let logger = LoggerHandle::getorsetup( // will only setup once "test-group", // log group "test-stream", // log stream 20, // batch size Duration::from_secs(5), // flush interval ).await?;

logger.info("Hello, world!".to_string()).await?;
logger.error("Something went wrong!".to_string()).await

}

[cfg(feature = "singleton")]

cloudwatchlogging::doctest!(example); ```

singleton Feature: initializing with environment variables

```rust use cloudwatch_logging::prelude::*; use std::env;

[cfg(feature = "singleton")]

async fn example() -> Result<(), LoggerError> { env::setvar("TESTGROUP", "test-group"); env::setvar("TESTSTREAM", "test-stream");

let logger = LoggerHandle::get_or_setup_with_env(
    "TEST_GROUP",   // log group env var
    "TEST_STREAM",  // log stream env var
    20,             // batch size
    Duration::from_secs(5),  // flush interval
).await?;

logger.info("Hello, world!".to_string()).await?;
logger.error("Something went wrong!".to_string()).await

}

[cfg(feature = "singleton")]

cloudwatchlogging::doctest!(example); ```

Documentation

For more information, please refer to the current documentation.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

We'd like to acknowledge the incredible work of the Rusoto community for their AWS SDK, their thoughtful implementation of Smithy, and their dedication to the Rust community.

Rusoto & Official AWS SDK for Rust

Rusoto is no longer maintained, although, it is still appropriate for and used in production environments. Once the official AWS SDK for Rust is stable, this crate will be updated to use it instead.