observability: tracing gum, automatically cross ref traceID (#5079)

* add some gum

* bump expander

* gum

* fix all remaining issues

* last fixup

* Update node/gum/proc-macro/src/lib.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* change

* netowrk

* fixins

* chore

* allow optional fmt str + args, prep for expr as kv field

* tracing -> gum rename fallout

* restrict further

* allow multiple levels of field accesses

* another round of docs and a slip of the pen

* update ADR

* fixup lock fiel

* use target: instead of target=

* minors

* fix

* chore

* Update node/gum/README.md

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
This commit is contained in:
Bernhard Schuster
2022-03-15 12:05:16 +01:00
committed by GitHub
parent fa359fd1f7
commit d631f1dea8
130 changed files with 1708 additions and 808 deletions
+35
View File
@@ -0,0 +1,35 @@
// Copyright 2022 Parity Technologies (UK) Ltd.
// This file is part of Polkadot.
// Polkadot is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Polkadot is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Polkadot. If not, see <http://www.gnu.org/licenses/>.
#![deny(unused_crate_dependencies)]
#![deny(missing_docs)]
#![deny(clippy::dbg_macro)]
//! A wrapper around `tracing` macros, to provide semi automatic
//! `traceID` annotation without codebase turnover.
pub use tracing::{enabled, event, Level};
#[doc(hidden)]
pub use jaeger::hash_to_trace_identifier;
#[doc(hidden)]
pub use polkadot_primitives::v2::{CandidateHash, Hash};
pub use gum_proc_macro::{debug, error, info, trace, warn};
#[cfg(test)]
mod tests;
+104
View File
@@ -0,0 +1,104 @@
// Copyright 2022 Parity Technologies (UK) Ltd.
// This file is part of Polkadot.
// Polkadot is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Polkadot is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Polkadot. If not, see <http://www.gnu.org/licenses/>.
use super::*;
pub use polkadot_primitives::v2::{CandidateHash, Hash};
#[derive(Default, Debug)]
struct Y {
#[allow(dead_code)]
x: u8,
}
#[test]
fn plain() {
error!("plain");
}
#[test]
fn wo_alias() {
let a: i32 = 7;
error!(target: "foo",
"Something something {}, {:?}, or maybe {}",
a,
b = Y::default(),
c = a
);
}
#[test]
fn wo_unnecessary() {
let a: i32 = 7;
warn!(target: "bar",
a = a,
b = ?Y::default(),
"fff {c}",
c = a,
);
}
#[test]
fn w_candidate_hash_value_assignment() {
let a: i32 = 7;
info!(target: "bar",
a = a,
// ad-hoc value
candidate_hash = %CandidateHash(Hash::repeat_byte(0xF0)),
b = ?Y::default(),
c = ?a,
"xxx",
);
}
#[test]
fn w_candidate_hash_from_scope() {
let a: i32 = 7;
let candidate_hash = CandidateHash(Hash::repeat_byte(0xF1));
debug!(target: "bar",
a = a,
?candidate_hash,
b = ?Y::default(),
c = ?a,
"xxx",
);
}
#[test]
fn w_candidate_hash_aliased() {
let a: i32 = 7;
let c_hash = Hash::repeat_byte(0xFA);
trace!(target: "bar",
a = a,
candidate_hash = ?c_hash,
b = ?Y::default(),
c = a,
"xxx",
);
}
#[test]
fn w_candidate_hash_aliased_unnecessary() {
let a: i32 = 7;
let candidate_hash = CandidateHash(Hash::repeat_byte(0xFA));
info!(
target: "bar",
a = a,
candidate_hash = ?candidate_hash,
b = ?Y::default(),
c = a,
"xxx",
);
}