On my end, this video has a thumbnail of you with your head down, and held in your hands, as if terribly distressed. I doubt the intention but, "decrusting" such a well organized, quality library while having that thumbnail as the cover gives me a little giggle. Good teachings, as always
It's the "TH-camr Face" expression. All you need to do is change the title to one of these handy suggestions: * 10 horrible mistakes Rust programmers make with the tracing crate * STOP GETTING THIS WRONG about tracing * 14 things Rust programmers wish they knew about tracing (number 12 will make you cringe!!) * Getting a headache from logging? Use THIS TRICK with the tracing crate!!! * 12 things about tracing that will make you furious (number 9 is just plain evil!!)
This was a fantastic breakdown, thank you so much for providing these. I'm currently building a webapp in Rust and when it came to implement logging with 'tracing' and 'tracing_subscriber' there were so many new concepts introduced all at once (Event, Span, Subscriber, Layer, Registry, Filter, and more) that the docs alone left me overwhelmed and I needed a hands-on introduction to understand what's going on. Love that you kick things off with practical code-examples that the viewer can copy and run on their own machine and then, from there, dive into the actual sources of the crate to demistify what's happening behind the scenes - it's a great approach.
Thank you! I consider myself a pretty good Rust developer but your depth of knowledge is above and beyond mine. Your videos (like this one) have helped me quickly get up to speed on things I didn't have in-depth knowledge of yet. You are appreciated sir!
I'm really excited to watch this one!! Today at work I connected Rust to our C# logging framework over FFI. There's still some details I need to think about but I'm sure there'll be some good answers in here for me!
1:38:50 TL;DR Depending on use case, like when using database storage, a SpanId can need to be unique "forever". If your trace SpanId & data is stored in a database, then it may (problematically) never be reused. Using file (or category) specific data archive/purge definition might specify the data lifetime. I would wait yet one more data lifetime before reusing the unique ID. It's the same argument Jon made about currently active spans where SpanId must be unique among all crates and modules. Both in terms of the subscriber not getting corrupt (or extra) data and so that filters can be applied during reporting without false positives.
at 41:00 were entering the main span in a separate thread by writing let _guard = span.enter(); then, within the same scope, were shadowing _guard with another let _guard = span.enter(); to enter the file span. shouldnt that have dropped the first _guard before assigning the second _guard? if so wouldnt that have left the main span? because if so why would it still say main : file in the log?
First off, amazing video, I was so excited when I saw this in my feed :) th-cam.com/video/21rtHinFA40/w-d-xo.html I was wondering if you could get an idea of just how much this is affecting the binary size by setting the compile time max level that was mentioned towards the start to none, and comparing to when its set to the level you are interested in getting? Since my understanding was that this option would exclude non relevant items from the binary? Not sure if this has already been mentioned before!
tracing really shouldn't advertise as a logging library. The idea that a logging library wouldn't output to stderr or stdout by default is mind-numbing. tracing really should be classified as a logging-assist crate.
On my end, this video has a thumbnail of you with your head down, and held in your hands, as if terribly distressed. I doubt the intention but, "decrusting" such a well organized, quality library while having that thumbnail as the cover gives me a little giggle. Good teachings, as always
I had to go see that.. 😄
lmao i thought u were joking but yea its there.
It's the "TH-camr Face" expression. All you need to do is change the title to one of these handy suggestions:
* 10 horrible mistakes Rust programmers make with the tracing crate
* STOP GETTING THIS WRONG about tracing
* 14 things Rust programmers wish they knew about tracing (number 12 will make you cringe!!)
* Getting a headache from logging? Use THIS TRICK with the tracing crate!!!
* 12 things about tracing that will make you furious (number 9 is just plain evil!!)
@@TylerLarson nowadays, what they do is the X sign with their arms for the thumbnail. I fucking hate it.
This was a fantastic breakdown, thank you so much for providing these.
I'm currently building a webapp in Rust and when it came to implement logging with 'tracing' and 'tracing_subscriber' there were so many new concepts introduced all at once (Event, Span, Subscriber, Layer, Registry, Filter, and more) that the docs alone left me overwhelmed and I needed a hands-on introduction to understand what's going on.
Love that you kick things off with practical code-examples that the viewer can copy and run on their own machine and then, from there, dive into the actual sources of the crate to demistify what's happening behind the scenes - it's a great approach.
These streams have been the single biggest help to me and no doubt others in learning this. You have made the world a better place 😀
LOVING this decrusting series
Thanks! This crate has always been a mystery to me, even though I'm at advanced level. Finally I'll be able to understand it better
Thank you! I consider myself a pretty good Rust developer but your depth of knowledge is above and beyond mine. Your videos (like this one) have helped me quickly get up to speed on things I didn't have in-depth knowledge of yet. You are appreciated sir!
I'm really excited to watch this one!! Today at work I connected Rust to our C# logging framework over FFI. There's still some details I need to think about but I'm sure there'll be some good answers in here for me!
I'm glad I just spend 10 hours getting tracing + logging + tokio-console + Jaeger w/opentelemetry working _before_ this video came out...
Same here. Learned it the hard way. 😂🎉
Been using the tracing lib for a while and never caught % and ? Looking forward to learning more in this vid
How does one make "logging" so generic and flexible? I'm amazed by the power of this crate.
Thanks for the video, very helpful and insightful!
Only 20 minutes in and already learned something new. This is great thank you!
I was in the process of adding tracing support to my rust no_std project when I found this video. Amazing work
Amazing video as always. High density and high value. Watching your videos is always fun and highly informative.
Does anyone else appreciate that at 45:35 Jon's code looks like a bird standing on a twig 🐦
Love this series, can you do tokio next?
That video might be 20 hours long!
It was incredible useful, thanks very much!!
Thank you so much for such educational material
These videos are great, keep up the good work :)
2:18:58 "Yeah I know, I could have written bigger. But you know, such is life."
I want someone to meme this with the "deal with it" sunglasses.
Very insightful, as always; thank you so much for your work!
great stream as always
been waiting for this 1 🙏
You are really good at it. I am a new subscriber.
Thanks!
Thanks Jon
感谢,视频太棒了,学到好多
Great stuff. Thanks
1:38:50 TL;DR Depending on use case, like when using database storage, a SpanId can need to be unique "forever".
If your trace SpanId & data is stored in a database, then it may (problematically) never be reused. Using file (or category) specific data archive/purge definition might specify the data lifetime. I would wait yet one more data lifetime before reusing the unique ID.
It's the same argument Jon made about currently active spans where SpanId must be unique among all crates and modules. Both in terms of the subscriber not getting corrupt (or extra) data and so that filters can be applied during reporting without false positives.
WHY DID I NOT RECEIVE A NOTIFICATION 😭😭😭
at 41:00 were entering the main span in a separate thread by writing let _guard = span.enter();
then, within the same scope, were shadowing _guard with another let _guard = span.enter(); to enter the file span.
shouldnt that have dropped the first _guard before assigning the second _guard? if so wouldnt that have left the main span? because if so why would it still say main : file in the log?
Ah, no, shadowing in Rust does not drop the shadowed item!
Thank you!
Great content, Thx Jon
Decrusting Pingora when? 🙏🙏
span span span span span span span span
i smell implicits from Scala.... :)
What font is your vim using?
noto sans mono
First off, amazing video, I was so excited when I saw this in my feed :)
th-cam.com/video/21rtHinFA40/w-d-xo.html I was wondering if you could get an idea of just how much this is affecting the binary size by setting the compile time max level that was mentioned towards the start to none, and comparing to when its set to the level you are interested in getting? Since my understanding was that this option would exclude non relevant items from the binary? Not sure if this has already been mentioned before!
what is your colorscheme?
gruvbox as I remember
tracing really shouldn't advertise as a logging library. The idea that a logging library wouldn't output to stderr or stdout by default is mind-numbing. tracing really should be classified as a logging-assist crate.