aboutsummaryrefslogtreecommitdiffstats
path: root/license-generator/src/logger.rs
diff options
context:
space:
mode:
authorTeddy Wing2018-11-11 23:53:18 +0100
committerTeddy Wing2018-11-11 23:53:18 +0100
commitc49e6b14ff9951a1cb31e5c05841e942a8b696cf (patch)
tree05e70db057f066c5e22d22646eda4aa460046119 /license-generator/src/logger.rs
parentdee0767b197f96cb4ffd4e6ad3d303feb9245d41 (diff)
downloaddome-key-web-c49e6b14ff9951a1cb31e5c05841e942a8b696cf.tar.bz2
main(): Move logging code into its own module
This will enable us to use the logging code in other binaries.
Diffstat (limited to 'license-generator/src/logger.rs')
-rw-r--r--license-generator/src/logger.rs44
1 files changed, 44 insertions, 0 deletions
diff --git a/license-generator/src/logger.rs b/license-generator/src/logger.rs
new file mode 100644
index 0000000..1d96ff1
--- /dev/null
+++ b/license-generator/src/logger.rs
@@ -0,0 +1,44 @@
+use std::env;
+use std::fs::OpenOptions;
+
+use fastcgi;
+use simplelog::{Config, LevelFilter, WriteLogger};
+
+use errors::*;
+
+pub fn init() -> Result<()> {
+ let log_file_path = env::var("LOG_FILE")
+ .chain_err(|| "LOG_FILE environment variable not found")?;
+
+ let log_file = OpenOptions::new()
+ .append(true)
+ .create(true)
+ .open(log_file_path)?;
+
+ let mut log_config = Config::default();
+ log_config.time_format = Some("%+");
+ WriteLogger::init(LevelFilter::Info, log_config, log_file)?;
+
+ Ok(())
+}
+
+pub fn log_request(req: &fastcgi::Request, post_params: &str) {
+ info!(
+ "{method} {path} {query} - {protocol} - {user_agent} - {remote_addr} | {forwarded_for} / {post_params}",
+ method = req.param("REQUEST_METHOD")
+ .unwrap_or("REQUEST_METHOD".into()),
+ path = req.param("SCRIPT_NAME")
+ .unwrap_or("SCRIPT_NAME".into()),
+ query = req.param("QUERY_STRING")
+ .unwrap_or("QUERY_STRING".into()),
+ protocol = req.param("SERVER_PROTOCOL")
+ .unwrap_or("SERVER_PROTOCOL".into()),
+ user_agent = req.param("HTTP_USER_AGENT")
+ .unwrap_or("HTTP_USER_AGENT".into()),
+ remote_addr = req.param("REMOTE_ADDR")
+ .unwrap_or("REMOTE_ADDR".into()),
+ forwarded_for = req.param("HTTP_X_FORWARDED_FOR")
+ .unwrap_or("HTTP_X_FORWARDED_FOR".into()),
+ post_params = post_params,
+ );
+}