logtail_rust/
lib.rs

1use crate::http_client::service;
2use crate::r#struct::env_config::{EnvConfig, EnvEnum};
3use crate::r#struct::log_level::LogLevel;
4// re-export LogSchema to make usable by consumer
5pub use crate::r#struct::log_schema::LogSchema;
6mod http_client;
7mod r#struct;
8
9pub struct Logger {
10    env_config: EnvConfig,
11}
12
13impl Default for Logger {
14    fn default() -> Self {
15        let env_config = EnvConfig::default();
16        Self { env_config }
17    }
18}
19
20impl Logger {
21    pub fn new(app_version: String, verbose: bool) -> Self {
22        let env_config = EnvConfig::new(app_version, verbose);
23        Self { env_config }
24    }
25
26    #[allow(dead_code)]
27    pub async fn info(&self, log: LogSchema) {
28        let env_config = &self.env_config;
29        let better_log = log.to_betterstack(env_config, LogLevel::Info);
30        if better_log.env != EnvEnum::Local {
31            let _result = service::push_log(env_config, &better_log).await;
32        }
33        if env_config.verbose {
34            println!("{}", better_log);
35        }
36    }
37
38    #[allow(dead_code)]
39    pub async fn warn(&self, log: LogSchema) {
40        let env_config = &self.env_config;
41        let better_log = log.to_betterstack(&self.env_config, LogLevel::Warn);
42        if better_log.env != EnvEnum::Local {
43            let _result = service::push_log(env_config, &better_log).await;
44        }
45        if self.env_config.verbose {
46            println!("{}", better_log);
47        }
48    }
49
50    #[allow(dead_code)]
51    pub async fn error(&self, log: LogSchema) {
52        let env_config = &self.env_config;
53        let better_log = log.to_betterstack(&self.env_config, LogLevel::Error);
54        if better_log.env != EnvEnum::Local {
55            let _result = service::push_log(env_config, &better_log).await;
56        }
57        if self.env_config.verbose {
58            eprintln!("{}", better_log);
59        }
60    }
61
62    #[allow(dead_code)]
63    pub async fn debug(&self, log: LogSchema) {
64        let better_log = log.to_betterstack(&self.env_config, LogLevel::Debug);
65        println!("{}", better_log);
66    }
67}