serilog/serilog (Serilog)
### [`v3.1.1`](https://togithub.com/serilog/serilog/releases/tag/v3.1.1)
- [#1977](https://togithub.com/serilog/serilog/issues/1977) - don't stack overflow when disposing `ReusableStringWriter` with large renderings ([@nblumhardt](https://togithub.com/nblumhardt))
This is a bugfix for [release 3.1.0](https://togithub.com/serilog/serilog/releases/tag/v3.1.0).
### [`v3.1.0`](https://togithub.com/serilog/serilog/releases/tag/v3.1.0)
- [#1935](https://togithub.com/serilog/serilog/issues/1935) - remove `CHANGES.md` ([@sungam3r](https://togithub.com/sungam3r))
- [#1936](https://togithub.com/serilog/serilog/issues/1936), [#1922](https://togithub.com/serilog/serilog/issues/1922) - `README.md` updates ([@nblumhardt](https://togithub.com/nblumhardt))
- [#1942](https://togithub.com/serilog/serilog/issues/1942) - remove redundant `GetTypeInfo()` calls ([@SimonCropp](https://togithub.com/SimonCropp))
- [#1947](https://togithub.com/serilog/serilog/issues/1947) - message template caching performance improvements ([@epeshk](https://togithub.com/epeshk))
- [#1948](https://togithub.com/serilog/serilog/issues/1948) - reduce allocations in `Logger.Write()` ([@epeshk](https://togithub.com/epeshk))
- [#1955](https://togithub.com/serilog/serilog/issues/1955) **breaking** - collect and propagate `Activity.Current.TraceId` and `SpanId` automatically in `Logger.Write()` ([@nblumhardt](https://togithub.com/nblumhardt))
- [#1964](https://togithub.com/serilog/serilog/issues/1964) - don't cache reusable string writers with large buffer sizes ([@Jakimar](https://togithub.com/Jakimar))
- [#1969](https://togithub.com/serilog/serilog/issues/1969) - `README.md` updates ([@bartelink](https://togithub.com/bartelink))
- [#1971](https://togithub.com/serilog/serilog/issues/1971) - drop test coverage for unsupported .NET Core versions ([@bartelink](https://togithub.com/bartelink))
### Built-in trace and span id support
This release adds two new first-class properties to `LogEvent`: `TraceId` and `SpanId`. These are set automatically in `Logger.Write()` to the corresponding property values from `System.Diagnostics.Activity.Current`.
The major benefit of this change is that sinks, once updated, can reliably propagate trace and span ids through to back-ends that support them (in much the same way that first-class timestamps, messages, levels, and exceptions are used today).
The sinks maintained under `serilog/serilog`, along with formatting helpers such as *Serilog.Formatting.Compact* and *Serilog.Expressions*, are already compatible with this change or have pending releases that add compatibility.
#### Dropped .NET Core 2.1 and 3.0 support
On .NET Core 2.1 and 3.0, projects targeting Serilog 3.1+ will fail to build, with:
/project/packages/system.runtime.compilerservices.unsafe/6.0.0/buildTransitive/netcoreapp2.0
/System.Runtime.CompilerServices.Unsafe.targets(4,5): error : System.Runtime.CompilerServices.Unsafe
doesn't support netcoreapp2.1. Consider updating your TargetFramework to netcoreapp3.1 or later.
Affected consumers should continue to use Serilog 3.0 or earlier. See [https://github.com/serilog/serilog/issues/1983](https://togithub.com/serilog/serilog/issues/1983) for a discussion of this issue.
#### Technical breaking change
Trace and span id collection includes support for `{TraceId}` and `{SpanId}` placeholders in output templates (commonly used when formatting text log files). Where previously these names resolved to user-defined properties, they now resolve to the built-in `LogEvent.TraceId` and `LogEvent.SpanId` values, respectively.
Impact is expected to be low/zero, because the trace and span id values in any user-added properties are almost certainly identical to the built-in ones.
### [`v3.0.1`](https://togithub.com/serilog/serilog/releases/tag/v3.0.1)
- [#1926](https://togithub.com/serilog/serilog/issues/1926) - fix `JsonFormatter` output for `renderMessage = true` ([@nblumhardt](https://togithub.com/nblumhardt))
### [`v3.0.0`](https://togithub.com/serilog/serilog/releases/tag/v3.0.0)
#### What's new in 3.0.0?
**Target framework changes** - Serilog no longer targets `netstandard1.x` or .NET Framework versions earlier than .NET 4.6.2. Users on affected frameworks should continue to target Serilog 2.12.x.
**Removed obsolete APIs** - Many deprecated/obsolete types and functions have been removed. Notably, `JsonFormatter` can no longer be subclassed (either port to `JsonValueFormatter`, use *Serilog.Expressions*, or copy [the original `JsonFormatter` code](https://togithub.com/serilog/serilog/blob/4d13be50c03e14b6072043799dc7e5dbe4139a19/src/Serilog/Formatting/Json/JsonFormatter.cs) into your project).
**Added APIs** - `LevelAlias.Off` is now provided as an equivalent to *Microsoft.Extensions.Logging*'s `LogLevel.Off`; `Destructure.AsDictionary()` can now be used to mark dictionary types.
**Fewer allocations on many hot paths** - A lot of work has gone into avoiding heap allocations wherever possible.
#### Changes
- Change exception message by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1762](https://togithub.com/serilog/serilog/pull/1762)
- Avoided `IEnumerator` allocation ([#1769](https://togithub.com/serilog/serilog/issues/1769)) by [@igor84](https://togithub.com/igor84) in [https://github.com/serilog/serilog/pull/1770](https://togithub.com/serilog/serilog/pull/1770)
- Avoid iterator allocations when working with SequenceValue by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1785](https://togithub.com/serilog/serilog/pull/1785)
- Add API approval test by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1783](https://togithub.com/serilog/serilog/pull/1783)
- Bump Newtonsoft.Json from 13.0.1 to 13.0.2 in /test/Serilog.Tests by [@dependabot](https://togithub.com/dependabot) in [https://github.com/serilog/serilog/pull/1787](https://togithub.com/serilog/serilog/pull/1787)
- Introduce `ScalarValue.Null` by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1774](https://togithub.com/serilog/serilog/pull/1774)
- `Tokens` -> `TokenArray` by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1778](https://togithub.com/serilog/serilog/pull/1778)
- Drop `netstandard1.3` and `netstandard1.0` support by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1807](https://togithub.com/serilog/serilog/pull/1807)
- Remove `JsonFormatter.Escape` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1804](https://togithub.com/serilog/serilog/pull/1804)
- Use `WriteLine(char)` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1803](https://togithub.com/serilog/serilog/pull/1803)
- Remove extension of `JsonFormatter` by subclassing by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1801](https://togithub.com/serilog/serilog/pull/1801)
- Remove redundant overrides from `LoggerSinkConfiguration` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1800](https://togithub.com/serilog/serilog/pull/1800)
- Avoid `StringWriter.ToString()` calls by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1782](https://togithub.com/serilog/serilog/pull/1782)
- Remove the obsolete `RawFormatter` type by [@nblumhardt](https://togithub.com/nblumhardt) in [https://github.com/serilog/serilog/pull/1808](https://togithub.com/serilog/serilog/pull/1808)
- .NET 7 SDK by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1806](https://togithub.com/serilog/serilog/pull/1806)
- Remove `OutputProperties.GetOutputProperties()` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1805](https://togithub.com/serilog/serilog/pull/1805)
- Verify API by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1809](https://togithub.com/serilog/serilog/pull/1809)
- Remove redundant nullable suppressions by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1810](https://togithub.com/serilog/serilog/pull/1810)
- Remove duplicate `Where()` calls in `FindConfigurationMethods()` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1812](https://togithub.com/serilog/serilog/pull/1812)
- Remove `net45` support by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1811](https://togithub.com/serilog/serilog/pull/1811)
- Remove redundant `GetTypeInfo()` in `LoadConfigurationAssemblies` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1817](https://togithub.com/serilog/serilog/pull/1817)
- Remove `GetTypeInfo()` from `FindConfigurationMethods(()` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1815](https://togithub.com/serilog/serilog/pull/1815)
- Remove redundant `GetTypeInfo()` in `EnumScalarConversionPolicy` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1816](https://togithub.com/serilog/serilog/pull/1816)
- Remove obsolete `PropertyToken` constructor by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1819](https://togithub.com/serilog/serilog/pull/1819)
- `switch` expressions by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1818](https://togithub.com/serilog/serilog/pull/1818)
- Do not allocate strings for `TextWriter.Write()` by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1775](https://togithub.com/serilog/serilog/pull/1775)
- Simplify reflection in` SettingValueConversions ` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1814](https://togithub.com/serilog/serilog/pull/1814)
- Improve `GetPropertiesRecursive()` performance by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1813](https://togithub.com/serilog/serilog/pull/1813)
- Use `Convert.ToHexString()` in `ByteArrayScalarConversionPolicy()` by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1776](https://togithub.com/serilog/serilog/pull/1776)
- Remove `FEATURE_ASYNCLOCAL` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1822](https://togithub.com/serilog/serilog/pull/1822)
- Remove `FEATURE_HASHTABLE` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1823](https://togithub.com/serilog/serilog/pull/1823)
- Use `IsEnum` for enum check in `EnumScalarConversionPolicy` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1825](https://togithub.com/serilog/serilog/pull/1825)
- Comments on `Hashtable` use in `MessageTemplateCache` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1828](https://togithub.com/serilog/serilog/pull/1828)
- Remove `GetTypeInfo()` from `PropertyValueConverter` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1824](https://togithub.com/serilog/serilog/pull/1824)
- Avoid repeated `GetType()` in `PropertyValueConverter` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1832](https://togithub.com/serilog/serilog/pull/1832)
- Leverage dictionary `TryAdd()` and items constructor by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1830](https://togithub.com/serilog/serilog/pull/1830)
- Use array instead of list when we know the size in `PropertyValueConverter` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1831](https://togithub.com/serilog/serilog/pull/1831)
- Move `net46` target to `net461` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1827](https://togithub.com/serilog/serilog/pull/1827)
- Clean up `JsonValueFormatter` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1835](https://togithub.com/serilog/serilog/pull/1835)
- `var` in `JsonFormatter` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1838](https://togithub.com/serilog/serilog/pull/1838)
- Remove obsolete `SelfLog.Out` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1837](https://togithub.com/serilog/serilog/pull/1837)
- Remove obsolete `JsonFormatter` `omitEnclosingObject` overload by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1834](https://togithub.com/serilog/serilog/pull/1834)
- Remove obsolete `PushProperties()` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1836](https://togithub.com/serilog/serilog/pull/1836)
- No point putting `_minimumLevel` and `_levelSwitch` on stack by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1840](https://togithub.com/serilog/serilog/pull/1840)
- Avoid casting enum to `int` where possible by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1841](https://togithub.com/serilog/serilog/pull/1841)
- Leverage nullable char in `JsonFormatter` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1839](https://togithub.com/serilog/serilog/pull/1839)
- Use correct overload with `char` in `JsonFormatter` by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1842](https://togithub.com/serilog/serilog/pull/1842)
- Annotate Serilog for trimming by [@agocke](https://togithub.com/agocke) in [https://github.com/serilog/serilog/pull/1690](https://togithub.com/serilog/serilog/pull/1690)
- Fix `net471` `DisableImplicitFrameworkReferences` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1846](https://togithub.com/serilog/serilog/pull/1846)
- Fix 461 `TargetFramework` constants in tests by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1847](https://togithub.com/serilog/serilog/pull/1847)
- Missing API approval by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1848](https://togithub.com/serilog/serilog/pull/1848)
- `net471` supports `ITuple` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1849](https://togithub.com/serilog/serilog/pull/1849)
- Remove `FEATURE_GETCURRENTMETHOD` const by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1851](https://togithub.com/serilog/serilog/pull/1851)
- macOS CI by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1858](https://togithub.com/serilog/serilog/pull/1858)
- Run tests on mac by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1860](https://togithub.com/serilog/serilog/pull/1860)
- BenchmarkDotNet 0.13.5 by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1861](https://togithub.com/serilog/serilog/pull/1861)
- Cache empty text token by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1859](https://togithub.com/serilog/serilog/pull/1859)
- Simplify `PublicApi_Should_Not_Change_Unintentionally()` test by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1864](https://togithub.com/serilog/serilog/pull/1864)
- Move from `net461` to `net462` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1863](https://togithub.com/serilog/serilog/pull/1863)
- Remove redundant `GetPackagingOutputs` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1867](https://togithub.com/serilog/serilog/pull/1867)
- Use char delimiters by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1868](https://togithub.com/serilog/serilog/pull/1868)
- Remove redundant reference assemblies by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1866](https://togithub.com/serilog/serilog/pull/1866)
- Introduce PolySharp by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1845](https://togithub.com/serilog/serilog/pull/1845)
- Missing PolySharp changes by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1869](https://togithub.com/serilog/serilog/pull/1869)
- Simplify build scripts by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1865](https://togithub.com/serilog/serilog/pull/1865)
- Added `ReusableStringWriter` by [@igor84](https://togithub.com/igor84) in [https://github.com/serilog/serilog/pull/1771](https://togithub.com/serilog/serilog/pull/1771)
- PublicApiGenerator v11 by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1877](https://togithub.com/serilog/serilog/pull/1877)
- Use `langword` in XML comments by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1871](https://togithub.com/serilog/serilog/pull/1871)
- Avoid creating `SafeAggregateSink` wrapper around empty list by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1878](https://togithub.com/serilog/serilog/pull/1878)
- Remove obsolete classes by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1874](https://togithub.com/serilog/serilog/pull/1874)
- Add space settings by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1885](https://togithub.com/serilog/serilog/pull/1885)
- Make `Alignment` and `LevelOverrides` readonly by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1884](https://togithub.com/serilog/serilog/pull/1884)
- Remove redundant `CallerArgumentExpressionAttribute` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1886](https://togithub.com/serilog/serilog/pull/1886)
- Remove `MessageTemplateToken.StartIndex` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1882](https://togithub.com/serilog/serilog/pull/1882)
- Microsoft.NET.Test.Sdk 17.5.0 by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1862](https://togithub.com/serilog/serilog/pull/1862)
- Throw, rather than exit, when any command in the build script fails by [@nblumhardt](https://togithub.com/nblumhardt) in [https://github.com/serilog/serilog/pull/1887](https://togithub.com/serilog/serilog/pull/1887)
- Suppress some warnings, tidy up some namespacing by [@nblumhardt](https://togithub.com/nblumhardt) in [https://github.com/serilog/serilog/pull/1888](https://togithub.com/serilog/serilog/pull/1888)
- Reinstate `LoggerSinkConfiguration.Sink(ILogEventSink, LogEventLevel)` by [@nblumhardt](https://togithub.com/nblumhardt) in [https://github.com/serilog/serilog/pull/1889](https://togithub.com/serilog/serilog/pull/1889)
- Avoid some alloc with `Array.Empty` by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1898](https://togithub.com/serilog/serilog/pull/1898)
- Destructure `ReadOnlyDictionary` as `Dictionary` by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1897](https://togithub.com/serilog/serilog/pull/1897)
- Remove redundant `IDictionary` cast by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1900](https://togithub.com/serilog/serilog/pull/1900)
- Adding ability to dispose nested loggers in `WriteTo.Logger()` by [@srogovtsev](https://togithub.com/srogovtsev) in [https://github.com/serilog/serilog/pull/1890](https://togithub.com/serilog/serilog/pull/1890)
- Optimize `AddPropertyIfAbsent` by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1872](https://togithub.com/serilog/serilog/pull/1872)
- Accept/pass through the standard `levelSwitch` option in `WriteTo.Logger()` by [@nblumhardt](https://togithub.com/nblumhardt) in [https://github.com/serilog/serilog/pull/1902](https://togithub.com/serilog/serilog/pull/1902)
- Add `net47` target by [@SimonCropp](https://togithub.com/SimonCropp) in [https://github.com/serilog/serilog/pull/1905](https://togithub.com/serilog/serilog/pull/1905)
- Annotate `WithProperty()` by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1907](https://togithub.com/serilog/serilog/pull/1907)
- Add `LoggingLevelSwitch.MinimumLevelChanged` by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1908](https://togithub.com/serilog/serilog/pull/1908)
- Fix [#1464](https://togithub.com/serilog/serilog/issues/1464), don't log parameter count mismatch message incorrectly by [@nblumhardt](https://togithub.com/nblumhardt) in [https://github.com/serilog/serilog/pull/1903](https://togithub.com/serilog/serilog/pull/1903)
- Add `Destructure.AsDictionary()` by [@sungam3r](https://togithub.com/sungam3r) in [https://github.com/serilog/serilog/pull/1906](https://togithub.com/serilog/serilog/pull/1906)
- Add `LevelAlias.Off`; fixes [#1684](https://togithub.com/serilog/serilog/issues/1684) by [@nblumhardt](https://togithub.com/nblumhardt) in [https://github.com/serilog/serilog/pull/1910](https://togithub.com/serilog/serilog/pull/1910)
- Use `JsonValueFormatter` to implement classic `JsonFormatter` by [@nblumhardt](https://togithub.com/nblumhardt) in [https://github.com/serilog/serilog/pull/1911](https://togithub.com/serilog/serilog/pull/1911)
- Include `README.md` in the NuGet package for display on nuget.org by [@nblumhardt](https://togithub.com/nblumhardt) in [https://github.com/serilog/serilog/pull/1916](https://togithub.com/serilog/serilog/pull/1916)
serilog/serilog-extensions-logging (Serilog.Extensions.Logging)
### [`v8.0.0`](https://togithub.com/serilog/serilog-extensions-logging/releases/tag/v8.0.0)
- [#227](https://togithub.com/serilog/serilog-extensions-logging/issues/227) - capture trace and span ids for Serilog 3.1 ([@nblumhardt](https://togithub.com/nblumhardt))
- [#234](https://togithub.com/serilog/serilog-extensions-logging/issues/234) - update to .NET 8 RTM and Serilog 3.1.1 ([@nblumhardt](https://togithub.com/nblumhardt))
### [`v7.0.0`](https://togithub.com/serilog/serilog-extensions-logging/releases/tag/v7.0.0)
- [#203](https://togithub.com/serilog/serilog-extensions-logging/issues/203) - observe `LogLevel.None` ([@0xced](https://togithub.com/0xced))
- [#212](https://togithub.com/serilog/serilog-extensions-logging/issues/212) - eliminate some enumerator boxing ([@sungam3r](https://togithub.com/sungam3r))
- [#210](https://togithub.com/serilog/serilog-extensions-logging/issues/210) - clean-up ([@sungam3r](https://togithub.com/sungam3r))
- [#214](https://togithub.com/serilog/serilog-extensions-logging/issues/214) - migrate to .NET 7 and C# 11 ([@sungam3r](https://togithub.com/sungam3r))
- [#216](https://togithub.com/serilog/serilog-extensions-logging/issues/216) - reduce allocations by caching trimmed `@` and `$` keys ([@sungam3r](https://togithub.com/sungam3r))
- [#218](https://togithub.com/serilog/serilog-extensions-logging/issues/218) - fix exception handling in audit mode ([@sungam3r](https://togithub.com/sungam3r))
- [#221](https://togithub.com/serilog/serilog-extensions-logging/issues/221) - add API approval tests ([@sungam3r](https://togithub.com/sungam3r))
- [#222](https://togithub.com/serilog/serilog-extensions-logging/issues/222) - pin to `Microsoft.Extensions.Logging` v7 ([@nblumhardt](https://togithub.com/nblumhardt))
serilog/serilog-settings-configuration (Serilog.Settings.Configuration)
### [`v8.0.0`](https://togithub.com/serilog/serilog-settings-configuration/releases/tag/v8.0.0)
- [#396](https://togithub.com/serilog/serilog-settings-configuration/issues/396) - document destructuring configuration ([@satrapu](https://togithub.com/satrapu))
- [#397](https://togithub.com/serilog/serilog-settings-configuration/issues/397) - improve NuGet package metadata ([@0xced](https://togithub.com/0xced))
- [#401](https://togithub.com/serilog/serilog-settings-configuration/issues/401) - update to .NET 8 and Serilog 3.1.1 ([@nblumhardt](https://togithub.com/nblumhardt))
### [`v7.0.0`](https://togithub.com/serilog/serilog-settings-configuration/releases/tag/v7.0.0)
- [#233](https://togithub.com/serilog/serilog-settings-configuration/issues/233) - minimum level configuration improvements ([@HexHunter97](https://togithub.com/HexHunter97))
- [#301](https://togithub.com/serilog/serilog-settings-configuration/issues/301) - support for delegate type arguments ([@almostchristian](https://togithub.com/almostchristian))
- [#326](https://togithub.com/serilog/serilog-settings-configuration/issues/326) - README improvements ([@nblumhardt](https://togithub.com/nblumhardt))
- [#333](https://togithub.com/serilog/serilog-settings-configuration/issues/333) - extension method discovery that goes easier on Dynatrace ([@skomis-mm](https://togithub.com/skomis-mm))
- [#334](https://togithub.com/serilog/serilog-settings-configuration/issues/334) - case-insensitive level support ([@skomis-mm](https://togithub.com/skomis-mm))
- [#342](https://togithub.com/serilog/serilog-settings-configuration/issues/342) - implicit `using` and file-scoped namespaces ([@sungam3r](https://togithub.com/sungam3r))
- [#344](https://togithub.com/serilog/serilog-settings-configuration/issues/344) - clean-up ([@sungam3r](https://togithub.com/sungam3r))
- [#351](https://togithub.com/serilog/serilog-settings-configuration/issues/351) - drop .NET 4.5.1 support ([@0xced](https://togithub.com/0xced))
- [#348](https://togithub.com/serilog/serilog-settings-configuration/issues/348) - additional `IFormatProvider` support ([@0xced](https://togithub.com/0xced))
- [#354](https://togithub.com/serilog/serilog-settings-configuration/issues/354), [#357](https://togithub.com/serilog/serilog-settings-configuration/issues/357) - improve tests using raw string literals ([@sungam3r](https://togithub.com/sungam3r))
- [#352](https://togithub.com/serilog/serilog-settings-configuration/issues/352) - `OnLevelSwitchCreated` callback ([@0xced](https://togithub.com/0xced))
- [#355](https://togithub.com/serilog/serilog-settings-configuration/issues/355) - add `global.json` ([@SimonCropp](https://togithub.com/SimonCropp))
- [#356](https://togithub.com/serilog/serilog-settings-configuration/issues/356) - use `Directory.Build.props` ([@SimonCropp](https://togithub.com/SimonCropp))
- [#359](https://togithub.com/serilog/serilog-settings-configuration/issues/359) - update test refs ([@SimonCropp](https://togithub.com/SimonCropp))
- [#360](https://togithub.com/serilog/serilog-settings-configuration/issues/360) - remove redundant project settings ([@SimonCropp](https://togithub.com/SimonCropp))
- [#358](https://togithub.com/serilog/serilog-settings-configuration/issues/358) - build on macOS ([@SimonCropp](https://togithub.com/SimonCropp))
- [#361](https://togithub.com/serilog/serilog-settings-configuration/issues/361) - add API approval tests ([@sungam3r](https://togithub.com/sungam3r))
- [#362](https://togithub.com/serilog/serilog-settings-configuration/issues/362) - support for reading configuration from `IConfigurationSection` contents ([@sungam3r](https://togithub.com/sungam3r))
- [#364](https://togithub.com/serilog/serilog-settings-configuration/issues/364) - nullable reference type fixes ([@0xced](https://togithub.com/0xced))
- [#367](https://togithub.com/serilog/serilog-settings-configuration/issues/367) - improve tests using raw string literals ([@0xced](https://togithub.com/0xced))
- [#369](https://togithub.com/serilog/serilog-settings-configuration/issues/369) - more nullable reference type safety ([@0xced](https://togithub.com/0xced))
- [#363](https://togithub.com/serilog/serilog-settings-configuration/issues/363) - allow configuration using internal types and methods ([@sungam3r](https://togithub.com/sungam3r))
- [#368](https://togithub.com/serilog/serilog-settings-configuration/issues/368) - improve `SelfLog` output ([@sungam3r](https://togithub.com/sungam3r))
- [#375](https://togithub.com/serilog/serilog-settings-configuration/issues/375) - fix README example ([@DevAlvaroF](https://togithub.com/DevAlvaroF))
- [#377](https://togithub.com/serilog/serilog-settings-configuration/issues/377) - pin to `Microsoft.Extensions.Configuration` v7 ([@nblumhardt](https://togithub.com/nblumhardt))
- [#353](https://togithub.com/serilog/serilog-settings-configuration/issues/353) - improve support for single-file apps ([@0xced](https://togithub.com/0xced))
- [#379](https://togithub.com/serilog/serilog-settings-configuration/issues/379) - simplify assembly loading ([@0xced](https://togithub.com/0xced))
- [#366](https://togithub.com/serilog/serilog-settings-configuration/issues/366) - reader options callback to expose `LoggingLevelSwitch` ([@0xced](https://togithub.com/0xced))
- [#380](https://togithub.com/serilog/serilog-settings-configuration/issues/380), [#381](https://togithub.com/serilog/serilog-settings-configuration/issues/381) - fix tests on .NET 4.8 ([@0xced](https://togithub.com/0xced))
- [#378](https://togithub.com/serilog/serilog-settings-configuration/issues/378) - fix error handling in build script ([@0xced](https://togithub.com/0xced))
serilog/serilog-sinks-console (Serilog.Sinks.Console)
### [`v5.0.1`](https://togithub.com/serilog/serilog-sinks-console/releases/tag/v5.0.1)
- [#149](https://togithub.com/serilog/serilog-sinks-console/issues/149) - update *Serilog* package dependency to 3.1.1 ([@nblumhardt](https://togithub.com/nblumhardt))
### [`v5.0.0`](https://togithub.com/serilog/serilog-sinks-console/releases/tag/v5.0.0)
- [#134](https://togithub.com/serilog/serilog-sinks-console/issues/134) - optimize `TimestampTokenRenderer` ([@sungam3r](https://togithub.com/sungam3r))
- [#135](https://togithub.com/serilog/serilog-sinks-console/issues/135) - added tests ([@sungam3r](https://togithub.com/sungam3r))
- [#137](https://togithub.com/serilog/serilog-sinks-console/issues/137) - support upper and lower-case formatting for all level widths ([@nblumhardt](https://togithub.com/nblumhardt))
- [#142](https://togithub.com/serilog/serilog-sinks-console/issues/142) - API approval tests ([@sungam3r](https://togithub.com/sungam3r))
- [#141](https://togithub.com/serilog/serilog-sinks-console/issues/141) - auditing support ([@sungam3r](https://togithub.com/sungam3r))
- [#146](https://togithub.com/serilog/serilog-sinks-console/issues/146) - support `TraceId` and `SpanId` placeholders, update to Serilog 3.1 ([@nblumhardt](https://togithub.com/nblumhardt))
Configuration
📅 Schedule: Branch creation - "before 4am on the first day of the month" in timezone Asia/Hong_Kong, 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.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
[ ] 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:
7.7.3.33461
->8.11.3.46984
2.12.0
->3.1.1
3.1.0
->8.0.0
3.4.0
->8.0.0
4.1.0
->5.0.1
Release Notes
serilog/serilog (Serilog)
### [`v3.1.1`](https://togithub.com/serilog/serilog/releases/tag/v3.1.1) - [#1977](https://togithub.com/serilog/serilog/issues/1977) - don't stack overflow when disposing `ReusableStringWriter` with large renderings ([@nblumhardt](https://togithub.com/nblumhardt)) This is a bugfix for [release 3.1.0](https://togithub.com/serilog/serilog/releases/tag/v3.1.0). ### [`v3.1.0`](https://togithub.com/serilog/serilog/releases/tag/v3.1.0) - [#1935](https://togithub.com/serilog/serilog/issues/1935) - remove `CHANGES.md` ([@sungam3r](https://togithub.com/sungam3r)) - [#1936](https://togithub.com/serilog/serilog/issues/1936), [#1922](https://togithub.com/serilog/serilog/issues/1922) - `README.md` updates ([@nblumhardt](https://togithub.com/nblumhardt)) - [#1942](https://togithub.com/serilog/serilog/issues/1942) - remove redundant `GetTypeInfo()` calls ([@SimonCropp](https://togithub.com/SimonCropp)) - [#1947](https://togithub.com/serilog/serilog/issues/1947) - message template caching performance improvements ([@epeshk](https://togithub.com/epeshk)) - [#1948](https://togithub.com/serilog/serilog/issues/1948) - reduce allocations in `Logger.Write()` ([@epeshk](https://togithub.com/epeshk)) - [#1955](https://togithub.com/serilog/serilog/issues/1955) **breaking** - collect and propagate `Activity.Current.TraceId` and `SpanId` automatically in `Logger.Write()` ([@nblumhardt](https://togithub.com/nblumhardt)) - [#1964](https://togithub.com/serilog/serilog/issues/1964) - don't cache reusable string writers with large buffer sizes ([@Jakimar](https://togithub.com/Jakimar)) - [#1969](https://togithub.com/serilog/serilog/issues/1969) - `README.md` updates ([@bartelink](https://togithub.com/bartelink)) - [#1971](https://togithub.com/serilog/serilog/issues/1971) - drop test coverage for unsupported .NET Core versions ([@bartelink](https://togithub.com/bartelink)) ### Built-in trace and span id support This release adds two new first-class properties to `LogEvent`: `TraceId` and `SpanId`. These are set automatically in `Logger.Write()` to the corresponding property values from `System.Diagnostics.Activity.Current`. The major benefit of this change is that sinks, once updated, can reliably propagate trace and span ids through to back-ends that support them (in much the same way that first-class timestamps, messages, levels, and exceptions are used today). The sinks maintained under `serilog/serilog`, along with formatting helpers such as *Serilog.Formatting.Compact* and *Serilog.Expressions*, are already compatible with this change or have pending releases that add compatibility. #### Dropped .NET Core 2.1 and 3.0 support On .NET Core 2.1 and 3.0, projects targeting Serilog 3.1+ will fail to build, with: /project/packages/system.runtime.compilerservices.unsafe/6.0.0/buildTransitive/netcoreapp2.0 /System.Runtime.CompilerServices.Unsafe.targets(4,5): error : System.Runtime.CompilerServices.Unsafe doesn't support netcoreapp2.1. Consider updating your TargetFramework to netcoreapp3.1 or later. Affected consumers should continue to use Serilog 3.0 or earlier. See [https://github.com/serilog/serilog/issues/1983](https://togithub.com/serilog/serilog/issues/1983) for a discussion of this issue. #### Technical breaking change Trace and span id collection includes support for `{TraceId}` and `{SpanId}` placeholders in output templates (commonly used when formatting text log files). Where previously these names resolved to user-defined properties, they now resolve to the built-in `LogEvent.TraceId` and `LogEvent.SpanId` values, respectively. Impact is expected to be low/zero, because the trace and span id values in any user-added properties are almost certainly identical to the built-in ones. ### [`v3.0.1`](https://togithub.com/serilog/serilog/releases/tag/v3.0.1) - [#1926](https://togithub.com/serilog/serilog/issues/1926) - fix `JsonFormatter` output for `renderMessage = true` ([@nblumhardt](https://togithub.com/nblumhardt)) ### [`v3.0.0`](https://togithub.com/serilog/serilog/releases/tag/v3.0.0) #### What's new in 3.0.0? **Target framework changes** - Serilog no longer targets `netstandard1.x` or .NET Framework versions earlier than .NET 4.6.2. Users on affected frameworks should continue to target Serilog 2.12.x. **Removed obsolete APIs** - Many deprecated/obsolete types and functions have been removed. Notably, `JsonFormatter` can no longer be subclassed (either port to `JsonValueFormatter`, use *Serilog.Expressions*, or copy [the original `JsonFormatter` code](https://togithub.com/serilog/serilog/blob/4d13be50c03e14b6072043799dc7e5dbe4139a19/src/Serilog/Formatting/Json/JsonFormatter.cs) into your project). **Added APIs** - `LevelAlias.Off` is now provided as an equivalent to *Microsoft.Extensions.Logging*'s `LogLevel.Off`; `Destructure.AsDictionaryserilog/serilog-extensions-logging (Serilog.Extensions.Logging)
### [`v8.0.0`](https://togithub.com/serilog/serilog-extensions-logging/releases/tag/v8.0.0) - [#227](https://togithub.com/serilog/serilog-extensions-logging/issues/227) - capture trace and span ids for Serilog 3.1 ([@nblumhardt](https://togithub.com/nblumhardt)) - [#234](https://togithub.com/serilog/serilog-extensions-logging/issues/234) - update to .NET 8 RTM and Serilog 3.1.1 ([@nblumhardt](https://togithub.com/nblumhardt)) ### [`v7.0.0`](https://togithub.com/serilog/serilog-extensions-logging/releases/tag/v7.0.0) - [#203](https://togithub.com/serilog/serilog-extensions-logging/issues/203) - observe `LogLevel.None` ([@0xced](https://togithub.com/0xced)) - [#212](https://togithub.com/serilog/serilog-extensions-logging/issues/212) - eliminate some enumerator boxing ([@sungam3r](https://togithub.com/sungam3r)) - [#210](https://togithub.com/serilog/serilog-extensions-logging/issues/210) - clean-up ([@sungam3r](https://togithub.com/sungam3r)) - [#214](https://togithub.com/serilog/serilog-extensions-logging/issues/214) - migrate to .NET 7 and C# 11 ([@sungam3r](https://togithub.com/sungam3r)) - [#216](https://togithub.com/serilog/serilog-extensions-logging/issues/216) - reduce allocations by caching trimmed `@` and `$` keys ([@sungam3r](https://togithub.com/sungam3r)) - [#218](https://togithub.com/serilog/serilog-extensions-logging/issues/218) - fix exception handling in audit mode ([@sungam3r](https://togithub.com/sungam3r)) - [#221](https://togithub.com/serilog/serilog-extensions-logging/issues/221) - add API approval tests ([@sungam3r](https://togithub.com/sungam3r)) - [#222](https://togithub.com/serilog/serilog-extensions-logging/issues/222) - pin to `Microsoft.Extensions.Logging` v7 ([@nblumhardt](https://togithub.com/nblumhardt))serilog/serilog-settings-configuration (Serilog.Settings.Configuration)
### [`v8.0.0`](https://togithub.com/serilog/serilog-settings-configuration/releases/tag/v8.0.0) - [#396](https://togithub.com/serilog/serilog-settings-configuration/issues/396) - document destructuring configuration ([@satrapu](https://togithub.com/satrapu)) - [#397](https://togithub.com/serilog/serilog-settings-configuration/issues/397) - improve NuGet package metadata ([@0xced](https://togithub.com/0xced)) - [#401](https://togithub.com/serilog/serilog-settings-configuration/issues/401) - update to .NET 8 and Serilog 3.1.1 ([@nblumhardt](https://togithub.com/nblumhardt)) ### [`v7.0.0`](https://togithub.com/serilog/serilog-settings-configuration/releases/tag/v7.0.0) - [#233](https://togithub.com/serilog/serilog-settings-configuration/issues/233) - minimum level configuration improvements ([@HexHunter97](https://togithub.com/HexHunter97)) - [#301](https://togithub.com/serilog/serilog-settings-configuration/issues/301) - support for delegate type arguments ([@almostchristian](https://togithub.com/almostchristian)) - [#326](https://togithub.com/serilog/serilog-settings-configuration/issues/326) - README improvements ([@nblumhardt](https://togithub.com/nblumhardt)) - [#333](https://togithub.com/serilog/serilog-settings-configuration/issues/333) - extension method discovery that goes easier on Dynatrace ([@skomis-mm](https://togithub.com/skomis-mm)) - [#334](https://togithub.com/serilog/serilog-settings-configuration/issues/334) - case-insensitive level support ([@skomis-mm](https://togithub.com/skomis-mm)) - [#342](https://togithub.com/serilog/serilog-settings-configuration/issues/342) - implicit `using` and file-scoped namespaces ([@sungam3r](https://togithub.com/sungam3r)) - [#344](https://togithub.com/serilog/serilog-settings-configuration/issues/344) - clean-up ([@sungam3r](https://togithub.com/sungam3r)) - [#351](https://togithub.com/serilog/serilog-settings-configuration/issues/351) - drop .NET 4.5.1 support ([@0xced](https://togithub.com/0xced)) - [#348](https://togithub.com/serilog/serilog-settings-configuration/issues/348) - additional `IFormatProvider` support ([@0xced](https://togithub.com/0xced)) - [#354](https://togithub.com/serilog/serilog-settings-configuration/issues/354), [#357](https://togithub.com/serilog/serilog-settings-configuration/issues/357) - improve tests using raw string literals ([@sungam3r](https://togithub.com/sungam3r)) - [#352](https://togithub.com/serilog/serilog-settings-configuration/issues/352) - `OnLevelSwitchCreated` callback ([@0xced](https://togithub.com/0xced)) - [#355](https://togithub.com/serilog/serilog-settings-configuration/issues/355) - add `global.json` ([@SimonCropp](https://togithub.com/SimonCropp)) - [#356](https://togithub.com/serilog/serilog-settings-configuration/issues/356) - use `Directory.Build.props` ([@SimonCropp](https://togithub.com/SimonCropp)) - [#359](https://togithub.com/serilog/serilog-settings-configuration/issues/359) - update test refs ([@SimonCropp](https://togithub.com/SimonCropp)) - [#360](https://togithub.com/serilog/serilog-settings-configuration/issues/360) - remove redundant project settings ([@SimonCropp](https://togithub.com/SimonCropp)) - [#358](https://togithub.com/serilog/serilog-settings-configuration/issues/358) - build on macOS ([@SimonCropp](https://togithub.com/SimonCropp)) - [#361](https://togithub.com/serilog/serilog-settings-configuration/issues/361) - add API approval tests ([@sungam3r](https://togithub.com/sungam3r)) - [#362](https://togithub.com/serilog/serilog-settings-configuration/issues/362) - support for reading configuration from `IConfigurationSection` contents ([@sungam3r](https://togithub.com/sungam3r)) - [#364](https://togithub.com/serilog/serilog-settings-configuration/issues/364) - nullable reference type fixes ([@0xced](https://togithub.com/0xced)) - [#367](https://togithub.com/serilog/serilog-settings-configuration/issues/367) - improve tests using raw string literals ([@0xced](https://togithub.com/0xced)) - [#369](https://togithub.com/serilog/serilog-settings-configuration/issues/369) - more nullable reference type safety ([@0xced](https://togithub.com/0xced)) - [#363](https://togithub.com/serilog/serilog-settings-configuration/issues/363) - allow configuration using internal types and methods ([@sungam3r](https://togithub.com/sungam3r)) - [#368](https://togithub.com/serilog/serilog-settings-configuration/issues/368) - improve `SelfLog` output ([@sungam3r](https://togithub.com/sungam3r)) - [#375](https://togithub.com/serilog/serilog-settings-configuration/issues/375) - fix README example ([@DevAlvaroF](https://togithub.com/DevAlvaroF)) - [#377](https://togithub.com/serilog/serilog-settings-configuration/issues/377) - pin to `Microsoft.Extensions.Configuration` v7 ([@nblumhardt](https://togithub.com/nblumhardt)) - [#353](https://togithub.com/serilog/serilog-settings-configuration/issues/353) - improve support for single-file apps ([@0xced](https://togithub.com/0xced)) - [#379](https://togithub.com/serilog/serilog-settings-configuration/issues/379) - simplify assembly loading ([@0xced](https://togithub.com/0xced)) - [#366](https://togithub.com/serilog/serilog-settings-configuration/issues/366) - reader options callback to expose `LoggingLevelSwitch` ([@0xced](https://togithub.com/0xced)) - [#380](https://togithub.com/serilog/serilog-settings-configuration/issues/380), [#381](https://togithub.com/serilog/serilog-settings-configuration/issues/381) - fix tests on .NET 4.8 ([@0xced](https://togithub.com/0xced)) - [#378](https://togithub.com/serilog/serilog-settings-configuration/issues/378) - fix error handling in build script ([@0xced](https://togithub.com/0xced))serilog/serilog-sinks-console (Serilog.Sinks.Console)
### [`v5.0.1`](https://togithub.com/serilog/serilog-sinks-console/releases/tag/v5.0.1) - [#149](https://togithub.com/serilog/serilog-sinks-console/issues/149) - update *Serilog* package dependency to 3.1.1 ([@nblumhardt](https://togithub.com/nblumhardt)) ### [`v5.0.0`](https://togithub.com/serilog/serilog-sinks-console/releases/tag/v5.0.0) - [#134](https://togithub.com/serilog/serilog-sinks-console/issues/134) - optimize `TimestampTokenRenderer` ([@sungam3r](https://togithub.com/sungam3r)) - [#135](https://togithub.com/serilog/serilog-sinks-console/issues/135) - added tests ([@sungam3r](https://togithub.com/sungam3r)) - [#137](https://togithub.com/serilog/serilog-sinks-console/issues/137) - support upper and lower-case formatting for all level widths ([@nblumhardt](https://togithub.com/nblumhardt)) - [#142](https://togithub.com/serilog/serilog-sinks-console/issues/142) - API approval tests ([@sungam3r](https://togithub.com/sungam3r)) - [#141](https://togithub.com/serilog/serilog-sinks-console/issues/141) - auditing support ([@sungam3r](https://togithub.com/sungam3r)) - [#146](https://togithub.com/serilog/serilog-sinks-console/issues/146) - support `TraceId` and `SpanId` placeholders, update to Serilog 3.1 ([@nblumhardt](https://togithub.com/nblumhardt))Configuration
📅 Schedule: Branch creation - "before 4am on the first day of the month" in timezone Asia/Hong_Kong, 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.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate. View repository job log here.