minitrace-rust icon indicating copy to clipboard operation
minitrace-rust copied to clipboard

minitrace tracing levels (from env var)

Open jon-chuang opened this issue 2 years ago • 5 comments

Can follow log! tracing levels, and use a cache friendly static location.

jon-chuang avatar Feb 23 '22 07:02 jon-chuang

Does it mean to support parsing levels from RUST_LOG?

Xuanwo avatar Mar 04 '22 10:03 Xuanwo

To migrate from tokio-tracing, I think we need this feature.

Xuanwo avatar Mar 08 '22 07:03 Xuanwo

I think this raises an important question.

Does minitrace strive for performance first or compatibility with the Log and Tracing ecosystem first?

There are three ways to wear the cost of tracing:

  1. compile-time
  2. run-time
  3. both

From my PoV, the attraction of minitrace is the run-time performance advantages. Ideally if I turn off tracing (via cfg, cfg_attr, etc) there is zero run-time cost.

That is, I want to pay as much of the costs at compile time as I can.
It seems to me, if the run time code is checking the env variables there is a cost here I'd prefer to sacrifice - if you want that convenience over performance there are the various log and tracing crates.

Or is the proposal here to check the env variables at compile time?

taqtiqa-mark avatar Mar 15 '22 11:03 taqtiqa-mark

I agree to use cfg to minimize/remove the performance impact.

andylokandy avatar Mar 15 '22 13:03 andylokandy

@jon-chuang and @Xuanwo would you be happy to close this issue, or is your proposal limited to a check at compile time and no runtime checks?

taqtiqa-mark avatar Mar 30 '22 11:03 taqtiqa-mark

The concept of 'level' may not be an optimal feature for tracing systems. While tokio-tracing incorporates this feature, the underlying motivation for having levels in a span primarily revolves around performance. More specifically, it relates to the performance implications of tracing elements that are not of interest. However, tracing differs from logging in two key aspects:

  1. Disregarding a low-level span might inadvertently discard a high-level child span.
  2. The process of filtering, or 'level' as it's often called, in a tracing system should be applied to a trace as a whole rather than individual spans within a trace.

In this context, minitrace offers a more efficient solution by filtering out entire traces that are not of interest through its unique collection system. Therefore, the concept of 'level', borrowed directly from logging systems, may not be suitable for tracing.

andylokandy avatar Jul 18 '23 14:07 andylokandy