|
|
@ -17,7 +17,6 @@ extern crate diesel; |
|
|
|
extern crate diesel_migrations; |
|
|
|
|
|
|
|
use std::{ |
|
|
|
fmt, // For panic logging
|
|
|
|
fs::create_dir_all, |
|
|
|
panic, |
|
|
|
path::Path, |
|
|
@ -26,6 +25,8 @@ use std::{ |
|
|
|
thread, |
|
|
|
}; |
|
|
|
|
|
|
|
use structopt::StructOpt; |
|
|
|
|
|
|
|
#[macro_use] |
|
|
|
mod error; |
|
|
|
mod api; |
|
|
@ -39,18 +40,6 @@ mod util; |
|
|
|
pub use config::CONFIG; |
|
|
|
pub use error::{Error, MapResult}; |
|
|
|
|
|
|
|
use structopt::StructOpt; |
|
|
|
|
|
|
|
// Used for catching panics and log them to file instead of stderr
|
|
|
|
use backtrace::Backtrace; |
|
|
|
struct Shim(Backtrace); |
|
|
|
|
|
|
|
impl fmt::Debug for Shim { |
|
|
|
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { |
|
|
|
write!(fmt, "\n{:?}", self.0) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#[derive(Debug, StructOpt)] |
|
|
|
#[structopt(name = "bitwarden_rs", about = "A Bitwarden API server written in Rust")] |
|
|
|
struct Opt { |
|
|
@ -156,8 +145,6 @@ fn init_logging(level: log::LevelFilter) -> Result<(), fern::InitError> { |
|
|
|
|
|
|
|
// Catch panics and log them instead of default output to StdErr
|
|
|
|
panic::set_hook(Box::new(|info| { |
|
|
|
let backtrace = Backtrace::new(); |
|
|
|
|
|
|
|
let thread = thread::current(); |
|
|
|
let thread = thread.name().unwrap_or("unnamed"); |
|
|
|
|
|
|
@ -169,23 +156,25 @@ fn init_logging(level: log::LevelFilter) -> Result<(), fern::InitError> { |
|
|
|
}, |
|
|
|
}; |
|
|
|
|
|
|
|
let backtrace = backtrace::Backtrace::new(); |
|
|
|
|
|
|
|
match info.location() { |
|
|
|
Some(location) => { |
|
|
|
error!( |
|
|
|
target: "panic", "thread '{}' panicked at '{}': {}:{}{:?}", |
|
|
|
target: "panic", "thread '{}' panicked at '{}': {}:{}\n{:?}", |
|
|
|
thread, |
|
|
|
msg, |
|
|
|
location.file(), |
|
|
|
location.line(), |
|
|
|
Shim(backtrace) |
|
|
|
backtrace |
|
|
|
); |
|
|
|
} |
|
|
|
None => error!( |
|
|
|
target: "panic", |
|
|
|
"thread '{}' panicked at '{}'{:?}", |
|
|
|
"thread '{}' panicked at '{}'\n{:?}", |
|
|
|
thread, |
|
|
|
msg, |
|
|
|
Shim(backtrace) |
|
|
|
backtrace |
|
|
|
), |
|
|
|
} |
|
|
|
})); |
|
|
|