serilog/serilog (Serilog)
### [`v4.0.0`](https://togithub.com/serilog/serilog/releases/tag/v4.0.0)
#### What's new in Serilog 4.0.0?
> If you're deploying to .NET Framework, note that Serilog's **assembly version** number has [been unpinned](#2015) from the long-running historical `2.0.0` default, and now matches the package version precisely. If you encounter issues, ensure your build is generating valid assembly binding redirects.
##### Simple, robust, built-in batching support
Sinks that need batching functionality [can now be easily written](#2055), without any additional package dependencies, by implementing `IBatchedLogEventSink`:
```csharp
class MyBatchedSink: IBatchedLogEventSink
{
public Task EmitBatchAsync(IReadOnlyCollection batch)
{
// Send a batch of log events...
}
}
```
Batched sinks can be added using `WriteTo.Sink(IBatchedLogEventSink, ...)` - they're given first-class consideration just like regular un-batched sinks.
The built-in batching implementation is based on `System.Threading.Channels` and draws on the original `Serilog.Sinks.PeriodicBatching` package (now in maintenance-mode), to provide a full-featured, efficient, async-native batching implementation.
##### Experimental dotted name capturing
By setting an experimental `AppContext` switch, message templates [can be used](#2063) to capture dotted names, which are required when using some logging schemas.
```csharp
AppContext.SetSwitch("Serilog.Parsing.MessageTemplateParser.AcceptDottedPropertyNames", true);
Log.Information("Running as {user.name}", Environment.UserName);
// Captures {"user.name": "nblumhardt"}
```
While currently experimental and unsupported, this flag is intended to help the ecosystem evaluate and prepare for dotted name support in a future Serilog release.
#### Changes
- [#2015](https://togithub.com/serilog/serilog/issues/2015) — **breaking** unpin assembly version ([@nblumhardt](https://togithub.com/nblumhardt))
- [#2045](https://togithub.com/serilog/serilog/issues/2045) — **breaking** use case-insensitive matching for level overrides ([@tillig](https://togithub.com/tillig))
- [#2051](https://togithub.com/serilog/serilog/issues/2051) — **breaking** recognize `UtcTimestamp` as a built-in token in output templates ([@MatthewHays](https://togithub.com/MatthewHays))
- [#1979](https://togithub.com/serilog/serilog/issues/1979) — add tests for `ReusableStringWriter` ([@nblumhardt](https://togithub.com/nblumhardt))
- [#2016](https://togithub.com/serilog/serilog/issues/2016) — update TFMs ([@nblumhardt](https://togithub.com/nblumhardt), [@bartelink](https://togithub.com/bartelink))
- [#2018](https://togithub.com/serilog/serilog/issues/2018) — add `LogEvent.UnstableAssembleFromParts()` ([@nblumhardt](https://togithub.com/nblumhardt))
- [#2044](https://togithub.com/serilog/serilog/issues/2044) — build updates for compatibility ([@tillig](https://togithub.com/tillig))
- [#2027](https://togithub.com/serilog/serilog/issues/2027) — improve trimming annotations, compatibility switch for compiler-generated type support ([@agocke](https://togithub.com/agocke))
- [#2055](https://togithub.com/serilog/serilog/issues/2055) — introduce `IBatchedLogEventSink` and `WriteTo.Sink(IBatchedLogEventSink)` ([@nblumhardt](https://togithub.com/nblumhardt))
- [#2060](https://togithub.com/serilog/serilog/issues/2060) — introduce `LoggerSinkConfiguration.CreateSink()` and redesign `.Wrap()` ([@nblumhardt](https://togithub.com/nblumhardt), [@bartelink](https://togithub.com/bartelink))
- [#2063](https://togithub.com/serilog/serilog/issues/2063) — improve `MessageTemplateParser` performance, switch to allow `.` in captured property names ([@nblumhardt](https://togithub.com/nblumhardt))
- [#2064](https://togithub.com/serilog/serilog/issues/2064) — make message template alignment parsing match spec ([@Insomniak47](https://togithub.com/Insomniak47))
- [#2065](https://togithub.com/serilog/serilog/issues/2065) — allow any character except `}` in message template format specifiers ([@Insomniak47](https://togithub.com/Insomniak47))
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
3.1.1
->4.0.0
Release Notes
serilog/serilog (Serilog)
### [`v4.0.0`](https://togithub.com/serilog/serilog/releases/tag/v4.0.0) #### What's new in Serilog 4.0.0? > If you're deploying to .NET Framework, note that Serilog's **assembly version** number has [been unpinned](#2015) from the long-running historical `2.0.0` default, and now matches the package version precisely. If you encounter issues, ensure your build is generating valid assembly binding redirects. ##### Simple, robust, built-in batching support Sinks that need batching functionality [can now be easily written](#2055), without any additional package dependencies, by implementing `IBatchedLogEventSink`: ```csharp class MyBatchedSink: IBatchedLogEventSink { public Task EmitBatchAsync(IReadOnlyCollectionConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.