# HG changeset patch # User Jiri Vanek # Date 1550346993 -3600 # Node ID 65de3b40a457109beb9d60356c02fa78f42f3bb5 # Parent 6bf82af023c167efe1dcadb8b96ac996c44c0a0b Implemented basic stub for file logging * rust-launcher/src/log_helper.rs: extracted log_impl from os.Implemented (always on for now) call to log to file * rust-launcher/src/main.rs: made aware of new log_hlper module * rust-launcher/src/os_access.rs: adapted to log_helper. Added forgotten is_verbose to windows os impl. diff -r 6bf82af023c1 -r 65de3b40a457 ChangeLog --- a/ChangeLog Sat Feb 16 18:51:33 2019 +0100 +++ b/ChangeLog Sat Feb 16 20:56:33 2019 +0100 @@ -1,3 +1,13 @@ +2019-02-16 Jiri Vanek + + Implemented basic stub for file logging + * rust-launcher/src/log_helper.rs: extracted log_impl from os. + Implemented (always on for now) call to log to file + * rust-launcher/src/main.rs: made aware of new log_hlper module + * rust-launcher/src/os_access.rs: adapted to log_helper. Added forgotten is_verbose + to windows os impl. + + 2019-02-16 Jiri Vanek * rust-launcher/src/os_access.rs: removed duplicated code from windows launchers diff -r 6bf82af023c1 -r 65de3b40a457 rust-launcher/src/log_helper.rs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rust-launcher/src/log_helper.rs Sat Feb 16 20:56:33 2019 +0100 @@ -0,0 +1,46 @@ +use os_access; +use std::fs::OpenOptions; +use std::io::Write; +use std::time::SystemTime; +use std::time::UNIX_EPOCH; +use std::fs::File; + +static mut first: bool = true; + +//0 critical +//1 info +//2 debug only +pub fn log_impl(level: i32, os: &os_access::Os, s: &str) { + if level == 0 {} else if level == 1 { + println!("{}", s); + } else if level == 2 { + if os.is_verbose() { + println!("{}", s); + } + } + unsafe { + if first { + //mkdir + //createfile + //rust itw log initiate dor so + first = false; + let start = SystemTime::now(); + let t = start.duration_since(UNIX_EPOCH).expect("time should be measureable"); + let mut file = File::create("my-file").expect("failed to create file log"); + if let Err(e) = write!(&mut file, "itw-rust-debug: file log started: {}\n", t.as_secs()) { + println!("Couldn't write to file: {}", e); + } + file.sync_all(); + } + } + let mut file = OpenOptions::new() + .write(true) + .append(true) + .open("my-file") + .expect("failed to append to file log"); + + if let Err(e) = writeln!(&mut file, "{}", s) { + println!("Couldn't write to file: {}", e); + } + file.sync_all(); +} \ No newline at end of file diff -r 6bf82af023c1 -r 65de3b40a457 rust-launcher/src/main.rs --- a/rust-launcher/src/main.rs Sat Feb 16 18:51:33 2019 +0100 +++ b/rust-launcher/src/main.rs Sat Feb 16 20:56:33 2019 +0100 @@ -6,6 +6,7 @@ mod utils; mod property; mod jars_helper; +mod log_helper; use std::string::String; use std::fmt::Write; diff -r 6bf82af023c1 -r 65de3b40a457 rust-launcher/src/os_access.rs --- a/rust-launcher/src/os_access.rs Sat Feb 16 18:51:33 2019 +0100 +++ b/rust-launcher/src/os_access.rs Sat Feb 16 20:56:33 2019 +0100 @@ -2,6 +2,7 @@ use dirs_paths_helper; use std::env; use std::fmt::Write; +use log_helper; pub fn create_java_cmd(os: &Os,jre_dir: &std::path::PathBuf, args: &Vec) -> std::process::Command { let mut bin_java = jre_dir.clone(); @@ -29,20 +30,6 @@ java executable: [{}], arguments: [{:?}]", jre_dir.clone().into_os_string().to_str().expect("path should unwrap"), args) } } -//0 critical -//1 info -//2 debug only -fn log_impl(level: i32, os: &Os, s: &str) { - if level == 0 { - - } else if level == 1 { - println!("{}", s); - } else if level == 2 { - if os.is_verbose() { - println!("{}", s); - } - } -} pub trait Os { // logging "api" can change @@ -88,11 +75,11 @@ fn log(&self, s: &str) { - log_impl(2,self, s); + log_helper::log_impl(2,self, s); } fn info(&self, s: &str) { - log_impl(1,self, s); + log_helper::log_impl(1,self, s); } fn get_registry_jdk(&self) -> Option { @@ -176,11 +163,15 @@ #[cfg(windows)] impl Os for Windows { fn log(&self, s: &str) { - log_impl(2,self, s); + log_helper::log_impl(2,self, s); } fn info(&self, s: &str) { - log_impl(1,self, s); + log_helper::log_impl(1,self, s); + } + + fn is_verbose(&self) -> bool { + return self.verbose; } fn get_registry_jdk(&self) -> Option {