1use crate::http_client::service;
2use crate::r#struct::env_config::{EnvConfig, EnvEnum};
3use crate::r#struct::log_level::LogLevel;
4pub 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}