Skip to content

Commit e5858c3

Browse files
committed
tracing imporvements
1 parent c43308e commit e5858c3

File tree

9 files changed

+44
-54
lines changed

9 files changed

+44
-54
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ itoa = "1.0.11"
1717
midly = "0.5.3"
1818
rustc-hash = "2.1.1"
1919
tracing = {version = "0.1.41", features = ["max_level_off","release_max_level_off"]}
20+
#tracing = {version = "0.1.41", features = []}
2021
tracing-subscriber = "0.3.20"
2122
yansi = "1.0.1"
2223

src/backend/fixup/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use crate::{
1313
Backend,
1414
},
1515
parser::parser::parse,
16-
time, traceln,
16+
time,
1717
};
1818

1919
pub struct FixupBackend();

src/backend/midi/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use super::{Backend, BackendResult};
1010
use crate::parser::parser::{parse, ParseResult};
1111
use crate::parser::tab_element::TabElement;
1212
use crate::parser::tab_element::TabElement::Fret;
13-
use crate::{debugln, time};
13+
use crate::time;
1414

1515
const BPM: u32 = 80;
1616
const MINUTE_IN_MS: u32 = 60 * 1000;

src/backend/muxml/formatters.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use crate::backend::muxml::{NoteProperties, Vibrato};
2-
use crate::debugln;
32
use itoa::Buffer;
43
use tracing::debug;
54
// This file uses explicit .write_str() -s, instead of writing a format!()ted string, because I

src/backend/muxml/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::parser::parser::{source_location_from_stream, ParseResult};
99
use crate::parser::tab_element::TabElement;
1010
use crate::{
1111
backend::{Backend, BackendResult},
12-
debugln, rlen, time, traceln,
12+
rlen, time,
1313
};
1414
use formatters::{
1515
write_muxml2_measure_prelude, write_muxml2_note, write_muxml2_rest, MUXML2_DOCUMENT_END,
@@ -135,7 +135,7 @@ impl MuxmlGenerator {
135135
let cap = Self::estimate_capacity(&parsed);
136136
let mut document = String::from(MUXML_INCOMPLETE_DOC_PRELUDE);
137137
document.reserve(cap);
138-
debug!("muxml2: reserved {}", cap);
138+
debug!(capacity = cap, "reserved capacity");
139139

140140
Self {
141141
parsed,
@@ -226,7 +226,7 @@ impl MuxmlGenerator {
226226
Ok(())
227227
}
228228
pub fn process_measure(&mut self, measure_idx: usize) -> Result<(), BackendError> {
229-
let meas = span!(Level::TRACE, "Muxml2: processing measure {}", measure_idx);
229+
let meas = span!(Level::TRACE, "Muxml2: processing measure", measure_idx);
230230
let _meas = meas.enter();
231231
let ticks_in_measure = rlen(&self.parsed.measures[measure_idx].data_range) / 6;
232232
debug_assert!(rlen(&self.parsed.measures[measure_idx].data_range) % 6 == 0);

src/backend/muxml/muxml2_tests.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use crate::backend::{
33
muxml::{settings::Settings, MuxmlBackend},
44
Backend,
55
};
6-
use crate::debugln;
76
use crate::parser::parser::{parse, source_location_from_stream};
87
use itertools::Itertools;
98

src/lib.rs

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -20,42 +20,6 @@ use std::{
2020

2121
pub mod backend;
2222
pub mod parser;
23-
#[macro_export]
24-
macro_rules! traceln {
25-
(depth=$depth:literal, $($t:expr),*) => {
26-
#[cfg(feature="sm_trace")]
27-
{
28-
use yansi::Paint;
29-
let padding=" ".repeat($depth);
30-
println!("{padding}{} {}", "[T]:".blue().bold(), format_args!($($t),*));
31-
}
32-
};
33-
($($t:expr),*) => {
34-
#[cfg(feature="sm_trace")]
35-
{
36-
use yansi::Paint;
37-
println!("{} {}", "[T]:".blue().bold(), format_args!($($t),*));
38-
}
39-
};
40-
}
41-
#[macro_export]
42-
macro_rules! debugln {
43-
(depth=$depth:literal, $($t:expr),*) => {
44-
#[cfg(feature="sm_debug")]
45-
{
46-
use yansi::Paint;
47-
let padding=" ".repeat($depth);
48-
println!("{padding}{} {}", "[D]:".green().bold(), format_args!($($t),*));
49-
}
50-
};
51-
($($t:expr),*) => {
52-
#[cfg(feature="sm_debug")]
53-
{
54-
use yansi::Paint;
55-
println!("{} {}", "[D]:".green().bold(), format_args!($($t),*));
56-
}
57-
};
58-
}
5923

6024
pub fn rlen<T: std::ops::Sub<Output = T> + Copy + std::ops::Add<u32, Output = T>>(
6125
r: &RangeInclusive<T>,

src/main.rs

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ use std::{
22
fmt::Write,
33
fs::{File, OpenOptions},
44
io::{BufRead, BufReader, BufWriter, Read, StdoutLock},
5+
sync::Arc,
56
};
67

78
use anyhow::{Context, Ok};
89
use clap::Parser;
10+
use entrace_core::remote::IETStorage;
911
use scoreman::{
1012
backend::errors::{
1113
backend_error::BackendError, diagnostic::Diagnostic, error_location::ErrorLocation,
@@ -63,7 +65,28 @@ impl std::io::Write for OutputType {
6365
}
6466
}
6567

68+
/// tracing via entrace. don't forget to disable the tracing feature flags too!
69+
#[allow(unreachable_code)]
70+
fn setup_tracing() -> Option<Arc<IETStorage<BufWriter<File>>>> {
71+
return None;
72+
73+
use entrace_core::{remote::IETStorage, remote::IETStorageConfig, TreeLayer};
74+
use std::{fs::OpenOptions, sync::Arc};
75+
use tracing::level_filters::LevelFilter;
76+
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, Registry};
77+
78+
let file =
79+
OpenOptions::new().write(true).create(true).truncate(true).open("scoreman.iet").unwrap();
80+
let storage =
81+
Arc::new(IETStorage::init(IETStorageConfig::non_length_prefixed(BufWriter::new(file))));
82+
let tree_layer = TreeLayer::from_storage(storage.clone());
83+
84+
Registry::default().with(LevelFilter::TRACE).with(tree_layer).init();
85+
Some(storage)
86+
}
87+
6688
fn main() -> anyhow::Result<()> {
89+
let trace_storage = setup_tracing();
6790
let cli = Cli::parse();
6891
let input_path = cli.command.input_path();
6992
let lines: Vec<String> = get_lines(input_path)?;
@@ -103,6 +126,9 @@ fn main() -> anyhow::Result<()> {
103126
}
104127
}
105128
}
129+
if let Some(s) = trace_storage {
130+
s.finish().unwrap();
131+
}
106132
if result.err.is_some() {
107133
std::process::exit(1)
108134
}
@@ -131,8 +157,7 @@ pub fn handle_error(
131157
let max_digit_cnt = digit_cnt_usize(*extended_range.end());
132158
for line_idx in extended_range {
133159
let zero_pad_cnt = max_digit_cnt.saturating_sub(digit_cnt_usize(line_idx + 1)) as usize;
134-
let mut line_num = String::new();
135-
line_num += &*" ".repeat(zero_pad_cnt);
160+
let mut line_num = " ".repeat(zero_pad_cnt);
136161
write!(&mut line_num, "{}", line_idx + 1)?;
137162

138163
let line_num = if relevant_lines.contains(&line_idx) {

src/parser/parser.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ use super::{
44
string_name,
55
tab_element::{self, tab_element3, TabElement},
66
};
7-
use crate::{
8-
backend::errors::backend_error::BackendError, debugln, parser::tab_element::TabElementError,
9-
traceln,
10-
};
7+
use crate::{backend::errors::backend_error::BackendError, parser::tab_element::TabElementError};
118
use std::ops::RangeInclusive;
129

1310
pub fn line_is_valid(line: &str) -> bool {
@@ -93,7 +90,8 @@ pub fn parse<T: AsRef<str>>(lines: &[T]) -> ParseResult {
9390
part_first_line += 1
9491
}
9592
let range = part_first_line..=part_first_line + 5;
96-
trace!(?range, "found part");
93+
let _part = span!(Level::DEBUG, "parsing part", ?range);
94+
let _part = _part.enter();
9795
r.offsets.push((part_first_line as u32, r.tick_stream.len() as u32));
9896
let mut part: Vec<&str> = lines[range].iter().map(|s| s.as_ref().trim()).collect(); // TODO: check if this is slow
9997

@@ -161,7 +159,8 @@ pub fn parse<T: AsRef<str>>(lines: &[T]) -> ParseResult {
161159
r.tick_stream.push(te);
162160
}
163161
if is_multichar {
164-
trace!(tick, "marked as multichar, running fixup");
162+
let _ms = span!(Level::DEBUG, "marked as multichar, running fixup", tick);
163+
let _ms = _ms.enter();
165164
tick_cnt_est -= 1;
166165
for s in 0..6 {
167166
if is_multi_on[s] {
@@ -170,7 +169,8 @@ pub fn parse<T: AsRef<str>>(lines: &[T]) -> ParseResult {
170169
};
171170
let elem_idx = r.tick_stream.len() - (6 - s);
172171
let elem = &r.tick_stream[elem_idx];
173-
trace!(string = s, ?elem);
172+
let _s = span!(Level::DEBUG, "fixing up string", string = s, ?elem);
173+
let _s = _s.enter();
174174
if let TabElement::Rest = elem {
175175
let _s2 = span!(
176176
Level::TRACE,
@@ -194,7 +194,9 @@ pub fn parse<T: AsRef<str>>(lines: &[T]) -> ParseResult {
194194
r.tick_stream[len - (6 - s)] = next.1;
195195
part[s] = next.0;
196196
} else {
197-
trace!("this is not a Rest, so we check the next element");
197+
let _q =
198+
span!(Level::TRACE, "this is not a Rest, so we check the next element");
199+
let _q = _q.enter();
198200
if part[s].starts_with("-") {
199201
trace!("next element is Rest so we skip it");
200202
part[s] = &part[s][1..];
@@ -310,7 +312,7 @@ pub fn source_location_from_stream(r: &ParseResult, tick_location: u32) -> (u32,
310312

311313
pub fn dump_source(input: &Vec<&str>) -> String {
312314
use itertools::Itertools;
313-
input.iter().join("\n")
315+
std::iter::once(&"").chain(input.iter()).join("\n")
314316
}
315317

316318
#[test]

0 commit comments

Comments
 (0)