Major bump of tracing-subscriber version (#3891)

I don't think there are any more releases to the 0.2.x versions, so best
we're on the 0.3.x release.

No change on the benchmarks, fast local time is still just as fast as
before:

new version bench:
```
fast_local_time         time:   [30.551 ns 30.595 ns 30.668 ns]
```

old version bench:
```
fast_local_time         time:   [30.598 ns 30.646 ns 30.723 ns]
```

---------

Co-authored-by: Bastian Köcher <git@kchr.de>
This commit is contained in:
Squirrel
2024-04-06 14:54:09 +01:00
committed by GitHub
parent 74d6309c0c
commit 9940038543
12 changed files with 46 additions and 36 deletions
Generated
+5 -4
View File
@@ -16200,7 +16200,7 @@ dependencies = [
"substrate-test-runtime",
"tempfile",
"tracing",
"tracing-subscriber 0.2.25",
"tracing-subscriber 0.3.18",
"wat",
]
@@ -16961,7 +16961,7 @@ dependencies = [
"thiserror",
"tracing",
"tracing-log 0.1.3",
"tracing-subscriber 0.2.25",
"tracing-subscriber 0.3.18",
]
[[package]]
@@ -19262,7 +19262,7 @@ dependencies = [
"parity-scale-codec",
"tracing",
"tracing-core",
"tracing-subscriber 0.2.25",
"tracing-subscriber 0.3.18",
]
[[package]]
@@ -20939,7 +20939,6 @@ dependencies = [
"chrono",
"lazy_static",
"matchers 0.0.1",
"parking_lot 0.11.2",
"regex",
"serde",
"serde_json",
@@ -20958,9 +20957,11 @@ version = "0.3.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
dependencies = [
"chrono",
"matchers 0.1.0",
"nu-ansi-term",
"once_cell",
"parking_lot 0.12.1",
"regex",
"sharded-slab",
"smallvec",
+1
View File
@@ -558,6 +558,7 @@ serde_json = { version = "1.0.114", default-features = false }
serde_yaml = { version = "0.9" }
syn = { version = "2.0.53" }
thiserror = { version = "1.0.48" }
tracing-subscriber = { version = "0.3.18" }
[profile.release]
# Polkadot runtime requires unwinding.
+1 -1
View File
@@ -47,7 +47,7 @@ sp-runtime = { path = "../../primitives/runtime" }
sp-maybe-compressed-blob = { path = "../../primitives/maybe-compressed-blob" }
sc-tracing = { path = "../tracing" }
sp-tracing = { path = "../../primitives/tracing" }
tracing-subscriber = "0.2.19"
tracing-subscriber = { workspace = true }
paste = "1.0"
regex = "1.6.0"
criterion = "0.4.0"
+2 -1
View File
@@ -30,7 +30,7 @@ serde = { workspace = true, default-features = true }
thiserror = { workspace = true }
tracing = "0.1.29"
tracing-log = "0.1.3"
tracing-subscriber = { version = "0.2.25", features = ["parking_lot"] }
tracing-subscriber = { workspace = true, features = ["parking_lot"] }
sc-client-api = { path = "../api" }
sc-tracing-proc-macro = { path = "proc-macro" }
sp-api = { path = "../../primitives/api" }
@@ -42,6 +42,7 @@ sp-tracing = { path = "../../primitives/tracing" }
[dev-dependencies]
criterion = "0.4.0"
tracing-subscriber = { workspace = true, features = ["chrono", "parking_lot"] }
[[bench]]
name = "bench"
+9 -4
View File
@@ -16,7 +16,10 @@
// limitations under the License.
use criterion::{criterion_group, criterion_main, Criterion};
use tracing_subscriber::fmt::time::{ChronoLocal, FormatTime};
use tracing_subscriber::fmt::{
format,
time::{ChronoLocal, FormatTime},
};
fn bench_fast_local_time(c: &mut Criterion) {
c.bench_function("fast_local_time", |b| {
@@ -24,7 +27,8 @@ fn bench_fast_local_time(c: &mut Criterion) {
let t = sc_tracing::logging::FastLocalTime { with_fractional: true };
b.iter(|| {
buffer.clear();
t.format_time(&mut buffer).unwrap();
let mut writer = format::Writer::new(&mut buffer);
t.format_time(&mut writer).unwrap();
})
});
}
@@ -33,10 +37,11 @@ fn bench_fast_local_time(c: &mut Criterion) {
fn bench_chrono_local(c: &mut Criterion) {
c.bench_function("chrono_local", |b| {
let mut buffer = String::new();
let t = ChronoLocal::with_format("%Y-%m-%d %H:%M:%S%.3f".to_string());
let t = ChronoLocal::new("%Y-%m-%d %H:%M:%S%.3f".to_string());
b.iter(|| {
buffer.clear();
t.format_time(&mut buffer).unwrap();
let mut writer: format::Writer<'_> = format::Writer::new(&mut buffer);
t.format_time(&mut writer).unwrap();
})
});
}
+1 -1
View File
@@ -290,7 +290,7 @@ impl<S> Layer<S> for ProfilingLayer
where
S: Subscriber + for<'span> LookupSpan<'span>,
{
fn new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<S>) {
fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<S>) {
if let Some(span) = ctx.span(id) {
let mut extension = span.extensions_mut();
let parent_id = attrs.parent().cloned().or_else(|| {
@@ -24,7 +24,7 @@ use tracing::{Event, Level, Subscriber};
use tracing_log::NormalizeEvent;
use tracing_subscriber::{
field::RecordFields,
fmt::{time::FormatTime, FmtContext, FormatEvent, FormatFields},
fmt::{format, time::FormatTime, FmtContext, FormatEvent, FormatFields},
layer::Context,
registry::{LookupSpan, SpanRef},
};
@@ -52,20 +52,20 @@ where
// NOTE: the following code took inspiration from tracing-subscriber
//
// https://github.com/tokio-rs/tracing/blob/2f59b32/tracing-subscriber/src/fmt/format/mod.rs#L449
pub(crate) fn format_event_custom<'b, S, N>(
pub(crate) fn format_event_custom<'b, 'w, S, N>(
&self,
ctx: CustomFmtContext<'b, S, N>,
writer: &mut dyn fmt::Write,
writer: format::Writer<'w>,
event: &Event,
) -> fmt::Result
where
S: Subscriber + for<'a> LookupSpan<'a>,
N: for<'a> FormatFields<'a> + 'static,
{
let writer = &mut ControlCodeSanitizer::new(!self.enable_color, writer);
let mut writer = &mut ControlCodeSanitizer::new(!self.enable_color, writer);
let normalized_meta = event.normalized_metadata();
let meta = normalized_meta.as_ref().unwrap_or_else(|| event.metadata());
time::write(&self.timer, writer, self.enable_color)?;
time::write(&self.timer, &mut format::Writer::new(&mut writer), self.enable_color)?;
if self.display_level {
let fmt_level = { FmtLevel::new(meta.level(), self.enable_color) };
@@ -108,7 +108,7 @@ where
writer.sanitize = true;
}
ctx.format_fields(writer, event)?;
ctx.format_fields(format::Writer::new(writer), event)?;
writeln!(writer)?;
writer.flush()
@@ -127,7 +127,7 @@ where
fn format_event(
&self,
ctx: &FmtContext<S, N>,
writer: &mut dyn fmt::Write,
mut writer: format::Writer<'_>,
event: &Event,
) -> fmt::Result {
if self.dup_to_stdout &&
@@ -136,7 +136,8 @@ where
event.metadata().level() == &Level::ERROR)
{
let mut out = String::new();
self.format_event_custom(CustomFmtContext::FmtContext(ctx), &mut out, event)?;
let buf_writer = format::Writer::new(&mut out);
self.format_event_custom(CustomFmtContext::FmtContext(ctx), buf_writer, event)?;
writer.write_str(&out)?;
print!("{}", out);
Ok(())
@@ -237,9 +238,13 @@ impl<'a> fmt::Display for FmtThreadName<'a> {
mod time {
use ansi_term::Style;
use std::fmt;
use tracing_subscriber::fmt::time::FormatTime;
use tracing_subscriber::fmt::{format, time::FormatTime};
pub(crate) fn write<T>(timer: T, writer: &mut dyn fmt::Write, with_ansi: bool) -> fmt::Result
pub(crate) fn write<T>(
timer: T,
writer: &mut format::Writer<'_>,
with_ansi: bool,
) -> fmt::Result
where
T: FormatTime,
{
@@ -269,11 +274,7 @@ where
S: Subscriber + for<'lookup> LookupSpan<'lookup>,
N: for<'writer> FormatFields<'writer> + 'static,
{
fn format_fields<R: RecordFields>(
&self,
writer: &'a mut dyn fmt::Write,
fields: R,
) -> fmt::Result {
fn format_fields<R: RecordFields>(&self, writer: format::Writer<'_>, fields: R) -> fmt::Result {
match self {
CustomFmtContext::FmtContext(fmt_ctx) => fmt_ctx.format_fields(writer, fields),
CustomFmtContext::ContextWithFormatFields(_ctx, fmt_fields) =>
@@ -312,7 +313,7 @@ where
struct ControlCodeSanitizer<'a> {
sanitize: bool,
buffer: String,
inner_writer: &'a mut dyn fmt::Write,
inner_writer: format::Writer<'a>,
}
impl<'a> fmt::Write for ControlCodeSanitizer<'a> {
@@ -342,7 +343,7 @@ fn strip_control_codes(input: &str) -> std::borrow::Cow<str> {
impl<'a> ControlCodeSanitizer<'a> {
/// Creates a new instance.
fn new(sanitize: bool, inner_writer: &'a mut dyn fmt::Write) -> Self {
fn new(sanitize: bool, inner_writer: format::Writer<'a>) -> Self {
Self { sanitize, inner_writer, buffer: String::new() }
}
@@ -18,7 +18,7 @@
use chrono::{Datelike, Timelike};
use std::{cell::RefCell, fmt::Write, time::SystemTime};
use tracing_subscriber::fmt::time::FormatTime;
use tracing_subscriber::fmt::{format, time::FormatTime};
/// A structure which, when `Display`d, will print out the current local time.
#[derive(Debug, Clone, Copy, Eq, PartialEq, Default)]
@@ -76,7 +76,7 @@ thread_local! {
}
impl FormatTime for FastLocalTime {
fn format_time(&self, w: &mut dyn Write) -> std::fmt::Result {
fn format_time(&self, w: &mut format::Writer<'_>) -> std::fmt::Result {
const TIMESTAMP_PARTIAL_LENGTH: usize = "0000-00-00 00:00:00".len();
let elapsed = SystemTime::now()
@@ -128,8 +128,8 @@ impl FormatTime for FastLocalTime {
}
impl std::fmt::Display for FastLocalTime {
fn fmt(&self, w: &mut std::fmt::Formatter) -> std::fmt::Result {
self.format_time(w)
fn fmt(&self, mut w: &mut std::fmt::Formatter) -> std::fmt::Result {
self.format_time(&mut format::Writer::new(&mut w))
}
}
@@ -32,7 +32,7 @@ impl<S> Layer<S> for PrefixLayer
where
S: Subscriber + for<'a> LookupSpan<'a>,
{
fn new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>) {
fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>) {
let span = match ctx.span(id) {
Some(span) => span,
None => {
+1 -1
View File
@@ -104,7 +104,7 @@ fn prepare_subscriber<N, E, F, W>(
where
N: for<'writer> FormatFields<'writer> + 'static,
E: FormatEvent<Registry, N> + 'static,
W: MakeWriter + 'static,
W: for<'writer> MakeWriter<'writer> + 'static,
F: layer::Layer<Formatter<N, E, W>> + Send + Sync + 'static,
FmtLayer<Registry, N, E, W>: layer::Layer<Registry> + Send + Sync + 'static,
{
@@ -148,7 +148,7 @@ impl Default for MakeStderrWriter {
}
}
impl tracing_subscriber::fmt::MakeWriter for MakeStderrWriter {
impl tracing_subscriber::fmt::MakeWriter<'_> for MakeStderrWriter {
type Writer = StderrWriter;
fn make_writer(&self) -> Self::Writer {
+2 -1
View File
@@ -26,7 +26,8 @@ codec = { version = "3.6.1", package = "parity-scale-codec", default-features =
] }
tracing = { version = "0.1.29", default-features = false }
tracing-core = { version = "0.1.32", default-features = false }
tracing-subscriber = { version = "0.2.25", optional = true, features = [
tracing-subscriber = { workspace = true, optional = true, features = [
"env-filter",
"tracing-log",
] }