mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 06:11:35 +00:00
filter by time
This commit is contained in:
parent
b228947b68
commit
5b7012318c
3 changed files with 44 additions and 29 deletions
|
@ -8,31 +8,14 @@ use ra_prof;
|
|||
fn main() -> Result<()> {
|
||||
std::env::set_var("RUST_BACKTRACE", "short");
|
||||
let logger = Logger::with_env_or_str("error").duplicate_to_stderr(Duplicate::All);
|
||||
match std::env::var("RA_INTERNAL_MODE") {
|
||||
match std::env::var("RA_LOG_DIR") {
|
||||
Ok(ref v) if v == "1" => logger.log_to_file().directory("log").start()?,
|
||||
_ => logger.start()?,
|
||||
};
|
||||
// Filtering syntax
|
||||
// env RA_PROFILE=* // dump everything
|
||||
// env RA_PROFILE=foo|bar|baz // enabled only selected entries
|
||||
// env RA_PROFILE=*@3 // dump everything, up to depth 3
|
||||
let filter = match std::env::var("RA_PROFILE") {
|
||||
Ok(p) => {
|
||||
let mut p = p.as_str();
|
||||
let depth = if let Some(idx) = p.rfind("@") {
|
||||
let depth: usize = p[idx + 1..].parse().expect("invalid profile depth");
|
||||
p = &p[..idx];
|
||||
depth
|
||||
} else {
|
||||
999
|
||||
};
|
||||
let allowed =
|
||||
if p == "*" { Vec::new() } else { p.split(";").map(String::from).collect() };
|
||||
ra_prof::Filter::new(depth, allowed)
|
||||
}
|
||||
ra_prof::set_filter(match std::env::var("RA_PROFILE") {
|
||||
Ok(spec) => ra_prof::Filter::from_spec(&spec),
|
||||
Err(_) => ra_prof::Filter::disabled(),
|
||||
};
|
||||
ra_prof::set_filter(filter);
|
||||
});
|
||||
log::info!("lifecycle: server started");
|
||||
match ::std::panic::catch_unwind(main_inner) {
|
||||
Ok(res) => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue