chiark / gitweb /
parse log config
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 5 Sep 2020 15:53:16 +0000 (16:53 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 5 Sep 2020 15:53:16 +0000 (16:53 +0100)
Cargo.lock.example
Cargo.toml
src/global.rs
src/imports.rs

index f92c0963d7f1c1ef0f13817119f446b7ae4c001a..431ed268b5bdefa7890060d52bb9970547728511 100644 (file)
@@ -377,6 +377,26 @@ dependencies = [
  "winapi 0.3.9",
 ]
 
+[[package]]
+name = "flexi_logger"
+version = "0.15.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aaab3caedb4149800f91e8e4899f29cd9ddf3b569b04c365ca9334f92f7542bf"
+dependencies = [
+ "atty",
+ "chrono",
+ "glob 0.3.0",
+ "lazy_static",
+ "log 0.4.11",
+ "notify",
+ "regex",
+ "serde",
+ "serde_derive",
+ "thiserror",
+ "toml 0.5.6",
+ "yansi",
+]
+
 [[package]]
 name = "fs2"
 version = "0.4.3"
@@ -431,11 +451,13 @@ dependencies = [
  "arrayvec",
  "failure",
  "fehler",
+ "flexi_logger",
  "fs2",
  "htmlescape",
  "index_vec",
  "inventory",
  "lazy_static",
+ "log 0.4.11",
  "nix",
  "num-traits",
  "percent-encoding 2.1.0",
index dd27710b9d25a8bfa702e51b311291f94b04757a..ba29b04deab4b9feac7153e8a074bc94c3c935cf 100644 (file)
@@ -42,6 +42,9 @@ typetag = "0.1"
 rmp-serde = "0.14"
 rmp = "^0.8"
 
+log = "0.4"
+flexi_logger = { version = "0.15", features = [ "specfile" ] }
+
 uds = "0"
 pwd = "1"
 failure = "0.1.8" # for pwd
index 0123ace693d516488bb145cda535a0df36fbf89a..b0007e81aa8f6b06b41e30a8b0a43f80bc17b44c 100644 (file)
@@ -935,6 +935,7 @@ pub struct ServerConfigSpec {
   pub http_port: Option<u16>,
   pub rocket_workers: Option<u16>,
   pub template_dir: Option<String>,
+  pub log: toml::Value,
 }
 
 #[derive(Debug,Clone)]
@@ -945,6 +946,7 @@ pub struct ServerConfig {
   pub http_port: Option<u16>,
   pub rocket_workers: u16,
   pub template_dir: String,
+  pub log: LogSpecification,
 }
 
 impl TryFrom<ServerConfigSpec> for ServerConfig {
@@ -953,7 +955,7 @@ impl TryFrom<ServerConfigSpec> for ServerConfig {
   fn try_from(spec: ServerConfigSpec) -> ServerConfig {
     let ServerConfigSpec {
       save_directory, command_socket, debug,
-      http_port, rocket_workers, template_dir
+      http_port, rocket_workers, template_dir, log,
     } = spec;
 
     let save_directory = save_directory
@@ -972,9 +974,13 @@ impl TryFrom<ServerConfigSpec> for ServerConfig {
     let template_dir = template_dir
       .unwrap_or_else(|| DEFAULT_TEMPLATE_DIR.to_owned());
 
+    let log = toml::to_string(&log)?;
+    let log = LogSpecification::from_toml(&log)
+      .context("log specification")?;
+
     ServerConfig {
       save_directory, command_socket, debug,
-      http_port, rocket_workers, template_dir
+      http_port, rocket_workers, template_dir, log,
     }
   }
 }
index 5a87a8e61511e033efaf1ff8c3b2c3fdca210203..6ef553e8a4664d0698329b1e32e5e8ccf2c9a3bc 100644 (file)
@@ -67,6 +67,8 @@ pub use regex::Regex;
 
 pub use arrayvec::ArrayVec;
 
+pub use flexi_logger::{LogSpecification};
+
 pub use crate::global::*;
 pub use crate::gamestate::*;
 pub use crate::pieces::*;