wip: added log rules to configuration file
This commit is contained in:
parent
3e0cd31961
commit
9a59da600e
65
src/main.rs
65
src/main.rs
|
@ -138,6 +138,15 @@ mod conf {
|
||||||
pub addr: ServeAddr,
|
pub addr: ServeAddr,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize, Serialize, Debug, Clone)]
|
||||||
|
/// Configuration of logging by lonk.
|
||||||
|
pub struct LogRules {
|
||||||
|
/// Where to write error logs to. The file will be appended to.
|
||||||
|
error_log_file: PathBuf,
|
||||||
|
/// Where to write access ogs to. The file will be appended to.
|
||||||
|
access_log_file: PathBuf,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, Debug, Clone)]
|
#[derive(Deserialize, Serialize, Debug, Clone)]
|
||||||
/// Configuration struct. This struct is a typed representation of the
|
/// Configuration struct. This struct is a typed representation of the
|
||||||
/// configuration file, with each of the domain-specific configurations
|
/// configuration file, with each of the domain-specific configurations
|
||||||
|
@ -153,6 +162,8 @@ mod conf {
|
||||||
pub version: Option<usize>,
|
pub version: Option<usize>,
|
||||||
/// Configuration regarding the Redis database.
|
/// Configuration regarding the Redis database.
|
||||||
pub db: DbConfig,
|
pub db: DbConfig,
|
||||||
|
/// Configuration regarding logging.
|
||||||
|
pub log_rules: LogRules,
|
||||||
/// Configuration regarding the types of (URL shorten) slugs produced.
|
/// Configuration regarding the types of (URL shorten) slugs produced.
|
||||||
pub slug_rules: SlugRules,
|
pub slug_rules: SlugRules,
|
||||||
/// Configuration regarding where and how the HTTP server is served.
|
/// Configuration regarding where and how the HTTP server is served.
|
||||||
|
@ -171,6 +182,10 @@ mod conf {
|
||||||
ServeFileNotExists(PathBuf),
|
ServeFileNotExists(PathBuf),
|
||||||
ServeDirNotDir(PathBuf),
|
ServeDirNotDir(PathBuf),
|
||||||
ServeDirNotExists(PathBuf),
|
ServeDirNotExists(PathBuf),
|
||||||
|
BadAccessLogPath,
|
||||||
|
BadErrorLogPath,
|
||||||
|
AccessLogDirectoryNotExists(PathBuf),
|
||||||
|
ErrorLogDirectoryNotExists(PathBuf),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Config {
|
impl Config {
|
||||||
|
@ -210,6 +225,34 @@ mod conf {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check access and error log parent directories
|
||||||
|
// - Access log file
|
||||||
|
let canonical = self
|
||||||
|
.log_rules
|
||||||
|
.access_log_file
|
||||||
|
.canonicalize()
|
||||||
|
.map_err(|_| ConfigParseError::BadAccessLogPath)?;
|
||||||
|
if let Some(parent) = canonical.parent() {
|
||||||
|
if !parent.exists() {
|
||||||
|
return Err(ConfigParseError::AccessLogDirectoryNotExists(
|
||||||
|
parent.to_path_buf(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// - Error log file
|
||||||
|
let canonical = self
|
||||||
|
.log_rules
|
||||||
|
.error_log_file
|
||||||
|
.canonicalize()
|
||||||
|
.map_err(|_| ConfigParseError::BadErrorLogPath)?;
|
||||||
|
if let Some(parent) = canonical.parent() {
|
||||||
|
if !parent.exists() {
|
||||||
|
return Err(ConfigParseError::ErrorLogDirectoryNotExists(
|
||||||
|
parent.to_path_buf(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(self)
|
Ok(self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -271,6 +314,18 @@ mod conf {
|
||||||
file.to_string_lossy()
|
file.to_string_lossy()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
ConfigParseError::BadAccessLogPath => {
|
||||||
|
panic!("Access log path could not be parsed as a canonicalizable path.")
|
||||||
|
}
|
||||||
|
ConfigParseError::BadErrorLogPath => {
|
||||||
|
panic!("Error log path could not be parsed as a canonicalizable path.")
|
||||||
|
}
|
||||||
|
ConfigParseError::AccessLogDirectoryNotExists(dir) => {
|
||||||
|
panic!("Access log file should have parent directory {}, but this directory does not exist.", dir.to_string_lossy())
|
||||||
|
}
|
||||||
|
ConfigParseError::ErrorLogDirectoryNotExists(dir) => {
|
||||||
|
panic!("Error log file should have parent directory {}, but this directory does not exist.", dir.to_string_lossy())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -329,6 +384,15 @@ mod conf {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for LogRules {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
error_log_file: "/etc/lonk/log/error.log".into(),
|
||||||
|
access_log_file: "/etc/lonk/log/access.log".into(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Default for Config {
|
impl Default for Config {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
@ -336,6 +400,7 @@ mod conf {
|
||||||
db: Default::default(),
|
db: Default::default(),
|
||||||
slug_rules: Default::default(),
|
slug_rules: Default::default(),
|
||||||
serve_rules: Default::default(),
|
serve_rules: Default::default(),
|
||||||
|
log_rules: Default::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue