#![cfg(feature = "aws")]
#![cfg_attr(docsrs, doc(cfg(feature = "awscout")))]
use crate::factory::awscout::CloudWatch;
use crate::{CloudWatchLogger, Logger, service};
pub struct CloudWatchConfig {
config: service::CloudWatchConfig,
}
pub struct CloudWatchEnv {
log_group: String,
}
impl CloudWatch {
pub fn config(self, config: service::CloudWatchConfig) -> CloudWatchConfig {
CloudWatchConfig { config }
}
pub fn env<S>(self, log_group: S) -> CloudWatchEnv
where
S: Into<String>,
{
CloudWatchEnv {
log_group: log_group.into(),
}
}
}
impl CloudWatchConfig {
pub fn new(config: service::CloudWatchConfig) -> Self {
Self { config }
}
pub fn get_config(&self) -> &service::CloudWatchConfig {
&self.config
}
pub fn config(self, config: service::CloudWatchConfig) -> CloudWatchConfig {
Self { config, ..self }
}
pub fn build(self) -> Logger {
Logger::new(self.build_impl())
}
pub fn build_impl(self) -> Box<CloudWatchLogger> {
CloudWatchLogger::new(self.config)
}
}
impl CloudWatchEnv {
pub fn new<S>(log_group: S) -> Self
where
S: Into<String>,
{
Self {
log_group: log_group.into(),
}
}
pub fn get_log_group(&self) -> &str {
self.log_group.as_str()
}
pub fn log_group<S>(&mut self, value: S) -> Self
where
S: Into<String>,
{
CloudWatchEnv {
log_group: value.into(),
}
}
pub fn build(self) -> Logger {
Logger::new(self.build_impl())
}
pub fn build_impl(self) -> Box<CloudWatchLogger> {
CloudWatchLogger::from_env(self.log_group)
}
}