Skip to content

Commit

Permalink
fix(logs): local timestamp (#65)
Browse files Browse the repository at this point in the history
  • Loading branch information
dan-online authored Oct 17, 2024
1 parent 5cb0307 commit e765481
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 16 deletions.
12 changes: 12 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ serde_json = "1.0.128"

# Tracing
tracing = "0.1.40"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
tracing-subscriber = { version = "0.3.18", features = ["env-filter", "fmt", "local-time", "time"] }
tracing-appender = "0.2.3"

# Database
Expand Down
30 changes: 18 additions & 12 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ use routes::{index::hello, triggers::trigger_get};
use service::manager::PulseManager;
use std::sync::Arc;
use tracing::info;
use tracing_appender::non_blocking::WorkerGuard;
use utils::cli::Args;
use utils::logs::setup_logs;
use utils::settings::Settings;
Expand All @@ -46,18 +47,7 @@ pub mod utils;

#[doc(hidden)]
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let args = Args::parse();

let settings = Settings::get_settings(args.config).with_context(|| "Failed to get settings")?;

let _guard = setup_logs(
settings.app.log_level.clone(),
settings.opts.log_file.clone(),
)?;

info!("💫 autopulse starting up...");

async fn run(settings: Settings, _guard: Option<WorkerGuard>) -> anyhow::Result<()> {
let hostname = settings.app.hostname.clone();
let port = settings.app.port;
let database_url = settings.app.database_url.clone();
Expand Down Expand Up @@ -103,3 +93,19 @@ async fn main() -> anyhow::Result<()> {

Ok(())
}

#[doc(hidden)]
fn main() -> anyhow::Result<()> {
let args = Args::parse();

let settings = Settings::get_settings(args.config).with_context(|| "Failed to get settings")?;

let guard = setup_logs(
settings.app.log_level.clone(),
settings.opts.log_file.clone(),
)?;

info!("💫 autopulse starting up...");

run(settings, guard)
}
17 changes: 14 additions & 3 deletions src/utils/logs.rs
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
use anyhow::{Context, Ok};
use std::{io, path::PathBuf};
use tracing_appender::non_blocking::WorkerGuard;
use tracing_subscriber::fmt::time::OffsetTime;
use tracing_subscriber::{fmt, layer::SubscriberExt, EnvFilter};

pub fn setup_logs(
log_level: String,
log_file: Option<PathBuf>,
) -> anyhow::Result<Option<WorkerGuard>> {
let timer = OffsetTime::local_rfc_3339()?;

let collector = tracing_subscriber::registry()
.with(
EnvFilter::default()
.add_directive(format!("autopulse={log_level}").parse()?)
.add_directive("actix_web=info".parse()?),
)
.with(fmt::Layer::new().with_writer(io::stdout));
.with(
fmt::Layer::new()
.with_timer(timer.clone())
.with_writer(io::stdout),
);

let mut file_guard = None;

Expand All @@ -28,8 +35,12 @@ pub fn setup_logs(

file_guard = Some(guard);

let collector =
collector.with(fmt::Layer::new().with_ansi(false).with_writer(non_blocking));
let collector = collector.with(
fmt::Layer::new()
.with_timer(timer)
.with_ansi(false)
.with_writer(non_blocking),
);

tracing::subscriber::set_global_default(collector)
.expect("Unable to set a global subscriber");
Expand Down

0 comments on commit e765481

Please sign in to comment.