feat(logger): Add a logger to the project
Former-commit-id: aa0579884951857a136904b3147eaa553117e68e
This commit is contained in:
parent
990ce40e35
commit
8f4e42d6d4
|
@ -30,6 +30,8 @@ ringbuf = "0.2.1"
|
|||
debug_stub_derive = "0.3.0"
|
||||
bytesize = "1.0.0"
|
||||
memmem = "0.1.1"
|
||||
log = "0.4.8"
|
||||
flexi_logger = {version = "0.14", features = ["colors"]}
|
||||
|
||||
rustyline = {version = "5.0.0", optional = true}
|
||||
nom = {version = "5.0.0", optional = true}
|
||||
|
|
|
@ -36,6 +36,9 @@ extern crate zip;
|
|||
|
||||
extern crate memmem;
|
||||
|
||||
#[macro_use]
|
||||
extern crate log;
|
||||
|
||||
#[macro_use]
|
||||
pub mod util;
|
||||
pub mod core;
|
||||
|
|
|
@ -14,12 +14,17 @@ use std::rc::Rc;
|
|||
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::time;
|
||||
|
||||
use std::process;
|
||||
use std::fs;
|
||||
|
||||
#[macro_use]
|
||||
extern crate clap;
|
||||
|
||||
#[macro_use]
|
||||
extern crate log;
|
||||
extern crate flexi_logger;
|
||||
use flexi_logger::*;
|
||||
|
||||
mod audio;
|
||||
mod input;
|
||||
mod video;
|
||||
|
@ -32,6 +37,8 @@ extern crate rustboyadvance_ng;
|
|||
use rustboyadvance_ng::prelude::*;
|
||||
use rustboyadvance_ng::util::FpsCounter;
|
||||
|
||||
const LOG_DIR: &str = ".logs";
|
||||
|
||||
fn get_savestate_path(rom_filename: &Path) -> PathBuf {
|
||||
rom_filename.with_extension("savestate")
|
||||
}
|
||||
|
@ -52,6 +59,16 @@ fn wait_for_rom(event_pump: &mut EventPump) -> String {
|
|||
}
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
fs::create_dir(LOG_DIR);
|
||||
flexi_logger::Logger::with_env()
|
||||
.log_to_file()
|
||||
.directory(LOG_DIR)
|
||||
.duplicate_to_stderr(Duplicate::Debug)
|
||||
.format_for_files(default_format)
|
||||
.format_for_stderr(colored_default_format)
|
||||
.start()
|
||||
.unwrap();
|
||||
|
||||
let mut frame_limiter = true;
|
||||
let yaml = load_yaml!("cli.yml");
|
||||
let matches = clap::App::from_yaml(yaml).get_matches();
|
||||
|
@ -60,6 +77,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
|
||||
let debug = matches.occurrences_of("debug") != 0;
|
||||
|
||||
info!("Initializing SDL2 context");
|
||||
let sdl_context = sdl2::init().expect("failed to initialize sdl2");
|
||||
let mut event_pump = sdl_context.event_pump()?;
|
||||
|
||||
|
@ -97,7 +115,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
let mut rom_path = match matches.value_of("game_rom") {
|
||||
Some(path) => path.to_string(),
|
||||
_ => {
|
||||
println!("[!] Rom file missing, please drag a rom file into the emulator window...");
|
||||
info!("[!] Rom file missing, please drag a rom file into the emulator window...");
|
||||
wait_for_rom(&mut event_pump)
|
||||
}
|
||||
};
|
||||
|
@ -125,9 +143,9 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
{
|
||||
gba.cpu.set_verbose(true);
|
||||
let mut debugger = Debugger::new(gba);
|
||||
println!("starting debugger...");
|
||||
info!("starting debugger...");
|
||||
debugger.repl(matches.value_of("script_file")).unwrap();
|
||||
println!("ending debugger...");
|
||||
info!("ending debugger...");
|
||||
return;
|
||||
}
|
||||
#[cfg(not(feature = "debugger"))]
|
||||
|
@ -161,20 +179,20 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
..
|
||||
} => {
|
||||
let mut debugger = Debugger::new(gba);
|
||||
println!("starting debugger...");
|
||||
info!("starting debugger...");
|
||||
debugger.repl(matches.value_of("script_file")).unwrap();
|
||||
gba = debugger.gba;
|
||||
println!("ending debugger...");
|
||||
info!("ending debugger...");
|
||||
break;
|
||||
}
|
||||
Event::KeyUp {
|
||||
keycode: Some(Keycode::F5),
|
||||
..
|
||||
} => {
|
||||
println!("Saving state ...");
|
||||
info!("Saving state ...");
|
||||
let save = gba.save_state()?;
|
||||
write_bin_file(&savestate_path, &save)?;
|
||||
println!(
|
||||
info!(
|
||||
"Saved to {:?} ({})",
|
||||
savestate_path,
|
||||
bytesize::ByteSize::b(save.len() as u64)
|
||||
|
@ -186,11 +204,11 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
} => {
|
||||
if savestate_path.is_file() {
|
||||
let save = read_bin_file(&savestate_path)?;
|
||||
println!("Restoring state from {:?}...", savestate_path);
|
||||
info!("Restoring state from {:?}...", savestate_path);
|
||||
gba.restore_state(&save)?;
|
||||
println!("Restored!");
|
||||
info!("Restored!");
|
||||
} else {
|
||||
println!("Savestate not created, please create one by pressing F5");
|
||||
info!("Savestate not created, please create one by pressing F5");
|
||||
}
|
||||
}
|
||||
Event::KeyDown {
|
||||
|
|
Reference in a new issue