Skip to content

Commit

Permalink
return guards so that logging successfully flushes if application is …
Browse files Browse the repository at this point in the history
…closed (#383)
  • Loading branch information
a5huynh committed Mar 16, 2023
1 parent 9f1771e commit 1faef51
Showing 1 changed file with 14 additions and 8 deletions.
22 changes: 14 additions & 8 deletions crates/spyglass/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ use libspyglass::pipeline;
use libspyglass::plugin;
use libspyglass::state::AppState;
use libspyglass::task::{self, AppPause, AppShutdown, ManagerCommand};
#[allow(unused_imports)]
use migration::Migrator;
use sentry::ClientInitGuard;
use shared::config::{self, Config};
use std::io;
use tokio::signal;
use tokio::sync::{broadcast, mpsc};
use tracing_appender::non_blocking::WorkerGuard;
use tracing_log::LogTracer;
use tracing_subscriber::{fmt, layer::SubscriberExt, EnvFilter};

Expand All @@ -36,7 +36,7 @@ struct CliArgs {
}

#[cfg(feature = "tokio-console")]
pub fn setup_logging(_config: &Config) {
pub fn setup_logging(_config: &Config) -> (Option<WorkerGuard>, Option<ClientInitGuard>) {
let subscriber = tracing_subscriber::registry()
.with(
EnvFilter::from_default_env()
Expand All @@ -49,12 +49,14 @@ pub fn setup_logging(_config: &Config) {
.spawn(),
);
tracing::subscriber::set_global_default(subscriber).expect("Unable to set a global subscriber");

(None, None)
}

#[cfg(not(feature = "tokio-console"))]
pub fn setup_logging(config: &Config) {
pub fn setup_logging(config: &Config) -> (Option<WorkerGuard>, Option<ClientInitGuard>) {
#[cfg(not(debug_assertions))]
let _guard = if config.user_settings.disable_telemetry {
let sentry_guard = if config.user_settings.disable_telemetry {
None
} else {
Some(sentry::init((
Expand All @@ -66,9 +68,11 @@ pub fn setup_logging(config: &Config) {
},
)))
};
#[cfg(debug_assertions)]
let sentry_guard = None;

let file_appender = tracing_appender::rolling::daily(config.logs_dir(), "server.log");
let (non_blocking, _guard) = tracing_appender::non_blocking(file_appender);
let (non_blocking, tracing_guard) = tracing_appender::non_blocking(file_appender);

let subscriber = tracing_subscriber::registry()
.with(
Expand All @@ -92,14 +96,16 @@ pub fn setup_logging(config: &Config) {
.with(fmt::Layer::new().with_ansi(false).with_writer(non_blocking))
.with(sentry_tracing::layer());
tracing::subscriber::set_global_default(subscriber).expect("Unable to set a global subscriber");

(Some(tracing_guard), sentry_guard)
}

#[tokio::main(flavor = "multi_thread")]
async fn main() -> Result<(), ()> {
let mut config = Config::new();
let args = CliArgs::parse();

setup_logging(&config);
let (_trace_guard, _sentry_guard) = setup_logging(&config);
LogTracer::init().expect("Unable to initialize LogTracer");

log::info!("Loading prefs from: {:?}", Config::prefs_dir());
Expand All @@ -115,7 +121,7 @@ async fn main() -> Result<(), ()> {
// Run any migrations, only on headless mode.
#[cfg(debug_assertions)]
{
use migration::DbErr;
use migration::{DbErr, Migrator};
let migration_status: Result<(), DbErr> = match Migrator::run_migrations().await {
Ok(_) => Ok(()),
Err(e) => {
Expand Down

0 comments on commit 1faef51

Please sign in to comment.