Allow filtering of tracing events via SERVO_TRACING (#34236)

* Allow filtering of tracing events via SERVO_TRACING

Signed-off-by: Delan Azabani <dazabani@igalia.com>

* Assume SERVO_TRACING=off by default

Signed-off-by: Delan Azabani <dazabani@igalia.com>

---------

Signed-off-by: Delan Azabani <dazabani@igalia.com>
This commit is contained in:
Delan Azabani 2024-11-13 17:52:26 +08:00 committed by GitHub
parent 873e82a532
commit c00804190c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 45 additions and 5 deletions

View file

@ -44,11 +44,11 @@ pub fn main() {
pub fn init_tracing() {
#[cfg(feature = "tracing")]
{
use tracing_subscriber::layer::SubscriberExt;
let subscriber = tracing_subscriber::registry();
#[cfg(feature = "tracing-perfetto")]
let subscriber = {
use tracing_subscriber::layer::SubscriberExt;
// Set up a PerfettoLayer for performance tracing.
// The servo.pftrace file can be uploaded to https://ui.perfetto.dev for analysis.
let file = std::fs::File::create("servo.pftrace").unwrap();
@ -59,11 +59,18 @@ pub fn init_tracing() {
#[cfg(feature = "tracing-hitrace")]
let subscriber = {
use tracing_subscriber::layer::SubscriberExt;
// Set up a HitraceLayer for performance tracing.
subscriber.with(HitraceLayer::default())
};
// Filter events and spans by the directives in SERVO_TRACING, using EnvFilter as a global filter.
// <https://docs.rs/tracing-subscriber/0.3.18/tracing_subscriber/layer/index.html#global-filtering>
let filter = tracing_subscriber::EnvFilter::builder()
.with_default_directive(tracing::level_filters::LevelFilter::OFF.into())
.with_env_var("SERVO_TRACING")
.from_env_lossy();
let subscriber = subscriber.with(filter);
// Same as SubscriberInitExt::init, but avoids initialising the tracing-log compat layer,
// since it would break Servos FromScriptLogger and FromCompositorLogger.
// <https://docs.rs/tracing-subscriber/0.3.18/tracing_subscriber/util/trait.SubscriberInitExt.html#method.init>