aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--warden/src/config/cli/mod.rs9
-rw-r--r--warden/src/config/mod.rs12
-rw-r--r--warden/src/logging/mod.rs5
-rw-r--r--warden/src/main.rs3
-rw-r--r--warden/src/server/mod.rs0
5 files changed, 22 insertions, 7 deletions
diff --git a/warden/src/config/cli/mod.rs b/warden/src/config/cli/mod.rs
index aa98ca8..1aa33b6 100644
--- a/warden/src/config/cli/mod.rs
+++ b/warden/src/config/cli/mod.rs
@@ -11,7 +11,6 @@ pub struct Cli {
#[arg(short, long, value_name = "FILE")]
#[serde(skip)]
pub config: Option<PathBuf>,
-
#[command(flatten)]
pub server: Server,
#[command(subcommand)]
@@ -37,11 +36,14 @@ pub struct Server {
#[arg(value_parser = clap::value_parser!(u16).range(1..=65535))]
pub port: Option<u16>,
/// Runtime environment
- #[arg(short, long, value_name = "ENV", default_value = "prod")]
+ #[arg(short, long, value_name = "ENV", default_value = "prod", env = "ENV")]
pub environment: Option<CliEnvironment>,
/// Log Level
- #[arg(short, long, value_name = "LOG_LEVEL")]
+ #[arg(long, value_name = "LOG_LEVEL", env = "LOG_LEVEL")]
pub log_level: Option<String>,
+ /// Log file directory (defaults to temp_dir)
+ #[arg(long, value_name = "DIR", env = "LOGS_DIR")]
+ pub log_dir: Option<PathBuf>,
}
impl Default for Server {
@@ -53,6 +55,7 @@ impl Default for Server {
"{}=debug,tower_http=debug,axum::rejection=trace",
env!("CARGO_CRATE_NAME")
)),
+ log_dir: Some(std::env::temp_dir())
}
}
}
diff --git a/warden/src/config/mod.rs b/warden/src/config/mod.rs
index b2e5307..3e2e5a8 100644
--- a/warden/src/config/mod.rs
+++ b/warden/src/config/mod.rs
@@ -1,6 +1,8 @@
mod cli;
mod log_level;
+use std::path::PathBuf;
+
use clap::ValueEnum;
pub use cli::Cli;
pub use cli::Commands;
@@ -36,6 +38,7 @@ pub struct Server {
pub port: u16,
pub environment: Environment,
pub log_level: EnvFilter,
+ pub log_dir: PathBuf,
}
impl Default for Server {
@@ -52,6 +55,7 @@ impl Default for Server {
)
.into()
}),
+ log_dir: std::env::temp_dir()
}
}
}
@@ -65,6 +69,13 @@ impl Configuration {
missing.push("server.port");
}
+ let log_dir = cli
+ .server
+ .log_dir
+ .clone()
+ .or(file.server.log_dir.clone())
+ .unwrap_or_else(std::env::temp_dir);
+
let log_level = cli
.server
.log_level
@@ -102,6 +113,7 @@ impl Configuration {
port: port.unwrap(),
environment,
log_level: log_level.into(),
+ log_dir
},
})
}
diff --git a/warden/src/logging/mod.rs b/warden/src/logging/mod.rs
index d24c750..abe4c15 100644
--- a/warden/src/logging/mod.rs
+++ b/warden/src/logging/mod.rs
@@ -1,4 +1,4 @@
-use std::env;
+use std::{env, path::PathBuf};
use tracing_appender::rolling::{RollingFileAppender, Rotation};
use tracing_subscriber::{EnvFilter, layer::SubscriberExt, util::SubscriberInitExt};
@@ -6,9 +6,8 @@ pub type LogHandle = tracing_subscriber::reload::Handle<EnvFilter, tracing_subsc
pub fn initialise_logging(
level: &EnvFilter,
+ log_dir: &PathBuf,
) -> (LogHandle, tracing_appender::non_blocking::WorkerGuard) {
- let log_dir = env::temp_dir();
-
let file_appender = RollingFileAppender::new(Rotation::DAILY, log_dir, env!("CARGO_PKG_NAME"));
let (non_blocking, guard) = tracing_appender::non_blocking(file_appender);
diff --git a/warden/src/main.rs b/warden/src/main.rs
index 839bd3c..0b0383f 100644
--- a/warden/src/main.rs
+++ b/warden/src/main.rs
@@ -16,6 +16,7 @@ use crate::{
mod config;
mod logging;
+mod server;
mod state;
#[tokio::main]
@@ -35,7 +36,7 @@ async fn main() -> anyhow::Result<()> {
};
let config = Configuration::merge(&cli, &config)?;
- let (log_handle, _guard) = logging::initialise_logging(&config.server.log_level);
+ let (log_handle, _guard) = logging::initialise_logging(&config.server.log_level, &config.server.log_dir);
let state = Arc::new(AppState::new(log_handle));
diff --git a/warden/src/server/mod.rs b/warden/src/server/mod.rs
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/warden/src/server/mod.rs