Trace sampling in SerilogTracing
Sampling in SerilogTracing is taking shape. If you haven’t heard of SerilogTracing, that’s not surprising - it’s a brand new project launched in January 2024. But, we’ve reached 250k downloads of the...
View Article.NET's ActivityListener sampling API
Distributed tracing can generate a lot of data, and sampling is the most established method to keep data volumes manageable. In .NET, the System.Diagnostics.ActivityListener class exposes two...
View ArticleVisualizing the Serilog 4.1 batch retry algorithm
This is a quick post exploring how Serilog 4.1 (currently in preview) schedules retries when logging fails.Logs tucked away in a file on a remote server aren’t very useful, so sending log events across...
View ArticleSerilog fallback sinks
Currently in preview, Serilog 4.1 adds support for falling back to a second sink when the first sink fails. This scenario shows up in a few variations, usually revolving around a network-based log...
View ArticleSerilog and .NET 8.0 minimal APIs
ASP.NET Core keeps evolving, and it’s been a while since I wrote one of these, so read on below for my take on an optimal Serilog configuration for ASP.NET Core 8 and the “minimal API” application...
View ArticleFrom SerilogTimings to SerilogTracing
SerilogTimings is a handy little library that wraps blocks of code in...
View ArticleThe case for an application-level tracing API in .NET
If you want to record a log event from your application in .NET, you can do that today without a lot of noise or ceremony using Microsoft.Extensions.Logging:_log.LogInformation("Completing order...
View ArticleSerilogTracing
TL:DR: Check out SerilogTracing, a simple, minimal extension for Serilog that integrates with System.Diagnostics.Activity to provide hierarchical, distributed traces and compatibility with the Serilog...
View ArticleSerilog project update, May 2023
👋 Howdy! I hope you’re enjoying the, frankly, pretty fantastic state of structured logging in .NET these days. If you’re using Serilog then I hope you’ve also been enjoying the long period of stability...
View ArticleHot-reload any Serilog sink
Hi! 👋Chances are you’ve found your way here because Serilog.Settings.Configuration’s runtime reconfiguration logic only supports minimum levels, and not any other sink parameters. This stems from a...
View ArticleSerilog 2.0 adventures with sub-loggers
The WriteTo.Logger() method pipes events from one Serilog logger into another. While this has been around since Serilog 1.3, some rough edges made it harder to configure correctly than it should have...
View ArticleSerilog 2.0 short level names
Serilog renders plain text logs in a simple format with each event’s timestamp, level and message:2016-07-18 08:53:53.691 +10:00 [Information] Starting up at 07/18/2016 08:53:53 2016-07-18 08:54:23.716...
View ArticleEvent types – structured logging concepts in .NET (4)
Structured logging is awesome, but the top reason for me is easily overlooked:There are orders of magnitude more events in a log than there are logging statements that generated them.Have you ever...
View ArticleSerilog 2.0 JSON improvements
Serilog 2.0 is out! There’s an Upgrade Guide and Release Notes already posted on the Serilog site, and a good number of first- and third-party packages have already been updated to work with the new...
View ArticleMessage templates and properties – structured logging concepts in .NET (3)
This post is the third in a series; start here.Trojan eventingA long time ago I encountered a library called Bamboo.Prevalence, by the amazing Rodrigo “Bamboo” de Oliveira. Following Java’s Prevayler,...
View ArticleEvents and levels - structured logging concepts in .NET (2)
Introductions are tough, I’m glad that’s out of the way. This post is going to dig straight into events and levels. If concepts like events, timestamps and logging levels are old news for you, this...
View ArticleStructured logging concepts in .NET Series (1)
Between now and the Serilog 2.0 release that’s due sometime in July, I’ve decided to go back to basics and write some posts on the fundamentals of modern structured logging in .NET.In the complex,...
View ArticleSerilog 2.0 Release Plans
.NET Core and ASP.NET Core are expected to release-to-web by the end of June 2016. There have been a few related announcments recently, surrounding the split of the runtime release (end of June) from...
View ArticleWhich logging abstraction should I use?
If you’re writing .NET apps or libraries for your own use, well, you can choose and use whatever logging facility you like.If you want to write packages for others to consume, your best bet is to avoid...
View ArticleSerilog Timings
TL;DR: I’ve just kicked off development of Serilog Timings, a tiny package that adds streamlined operation timings on top of Serilog.Though there are a million ways to collect timing data from...
View Article