From bcb0cea36cfa0e687c3d3cad2c4e5796bb0f380f Mon Sep 17 00:00:00 2001 From: Nicholas Blumhardt Date: Thu, 17 Oct 2019 15:18:27 +1000 Subject: [PATCH 01/34] Dev version bump [skip ci] --- .../Serilog.Formatting.Compact.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index 0d477cd..c2bdfba 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -2,7 +2,7 @@ A simple, compact JSON-based event format for Serilog. - 1.1.0 + 1.1.1 Serilog Contributors net452;netstandard1.1;netstandard2.0 true From 06ef9d87c37d6885a4b08c5e559d3399782dc93e Mon Sep 17 00:00:00 2001 From: Nicholas Blumhardt Date: Fri, 14 Feb 2020 08:28:06 +1000 Subject: [PATCH 02/34] Use less confusing name for rendered `JsonFormatter` in the benchmarks table [skip ci] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d291a49..9e60f7a 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ See `test/Serilog.Formatting.Compact.Tests/FormattingBenchmarks.cs`. |:------------------------------ |----------: |---------: |------: | | `JsonFormatter` | 11.2775 µs | 0.0682 µs | 1.00 | | `CompactJsonFormatter` | 6.0315 µs | 0.0429 µs | 0.53 | -| `RenderedJsonFormatter` | 13.7585 µs | 0.1194 µs | 1.22 | +| `JsonFormatter(renderMessage: true)` | 13.7585 µs | 0.1194 µs | 1.22 | | `RenderedCompactJsonFormatter` | 7.0680 µs | 0.0605 µs | 0.63 | ### Tools From 468c643563e662eda30ad1230dae79c3719175ca Mon Sep 17 00:00:00 2001 From: Lior Banai <36262995+LiorBanai@users.noreply.github.com> Date: Fri, 6 Mar 2020 12:24:28 +0200 Subject: [PATCH 03/34] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e60f7a..c5ba760 100644 --- a/README.md +++ b/README.md @@ -150,4 +150,4 @@ Several tools are available for working with the CLEF format. * **[`clef-tool`](https://github.com/datalust/clef-tool)** - a CLI application for processing CLEF files * **[Compact Log Format Viewer](https://github.com/warrenbuckley/Compact-Log-Format-Viewer)** - a cross-platform viewer for CLEF JSON files * **[_Serilog.Formatting.Compact.Reader_](https://github.com/serilog/serilog-formatting-compact-reader)** - convert CLEF JSON documents back into Serilog `LogEvent`s - + * **[Analogy.LogViewer.Serilog](https://github.com/Analogy-LogViewer/Analogy.LogViewer.Serilog)** - Analogy Serilog Parser for CLEF Compact JSON format for [Analogy Log Viewer](https://github.com/Analogy-LogViewer/Analogy.LogViewer). From ad35ff5f248849bc97f9195ad35887a01f61a891 Mon Sep 17 00:00:00 2001 From: Nicholas Blumhardt Date: Sat, 7 Mar 2020 07:37:15 +1000 Subject: [PATCH 04/34] Simplify description of Analogy CLEF parser --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c5ba760..4559232 100644 --- a/README.md +++ b/README.md @@ -150,4 +150,4 @@ Several tools are available for working with the CLEF format. * **[`clef-tool`](https://github.com/datalust/clef-tool)** - a CLI application for processing CLEF files * **[Compact Log Format Viewer](https://github.com/warrenbuckley/Compact-Log-Format-Viewer)** - a cross-platform viewer for CLEF JSON files * **[_Serilog.Formatting.Compact.Reader_](https://github.com/serilog/serilog-formatting-compact-reader)** - convert CLEF JSON documents back into Serilog `LogEvent`s - * **[Analogy.LogViewer.Serilog](https://github.com/Analogy-LogViewer/Analogy.LogViewer.Serilog)** - Analogy Serilog Parser for CLEF Compact JSON format for [Analogy Log Viewer](https://github.com/Analogy-LogViewer/Analogy.LogViewer). + * **[Analogy.LogViewer.Serilog](https://github.com/Analogy-LogViewer/Analogy.LogViewer.Serilog)** - CLEF parser for [Analogy Log Viewer](https://github.com/Analogy-LogViewer/Analogy.LogViewer). From 1eca9e524cb8b2abc32b08ef1e3f87fed6762f73 Mon Sep 17 00:00:00 2001 From: Nicholas Blumhardt Date: Sat, 7 Mar 2020 07:44:07 +1000 Subject: [PATCH 05/34] README formatting tidy-up; alphabetically sort tools; add `seqcli` --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4559232..2697208 100644 --- a/README.md +++ b/README.md @@ -147,7 +147,9 @@ See `test/Serilog.Formatting.Compact.Tests/FormattingBenchmarks.cs`. Several tools are available for working with the CLEF format. + * **[_Analogy.LogViewer.Serilog_](https://github.com/Analogy-LogViewer/Analogy.LogViewer.Serilog)** - CLEF parser for [Analogy Log Viewer](https://github.com/Analogy-LogViewer/Analogy.LogViewer) * **[`clef-tool`](https://github.com/datalust/clef-tool)** - a CLI application for processing CLEF files - * **[Compact Log Format Viewer](https://github.com/warrenbuckley/Compact-Log-Format-Viewer)** - a cross-platform viewer for CLEF JSON files - * **[_Serilog.Formatting.Compact.Reader_](https://github.com/serilog/serilog-formatting-compact-reader)** - convert CLEF JSON documents back into Serilog `LogEvent`s - * **[Analogy.LogViewer.Serilog](https://github.com/Analogy-LogViewer/Analogy.LogViewer.Serilog)** - CLEF parser for [Analogy Log Viewer](https://github.com/Analogy-LogViewer/Analogy.LogViewer). + * **[Compact Log Format Viewer](https://github.com/warrenbuckley/Compact-Log-Format-Viewer)** - a cross-platform viewer for CLEF files + * **[`seqcli`](https://github.com/datalust/seqcli)** - pretty-`print` CLEF files at the command-line, or `ingest` CLEF files into [Seq](https://datalust.co/seq) for search, and analysis + * **[_Serilog.Formatting.Compact.Reader_](https://github.com/serilog/serilog-formatting-compact-reader)** - convert CLEF documents back into Serilog `LogEvent`s + From 7140c0107ee77e0eaa4127f90c6fde310bb44cc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20Dom=C3=ADnguez?= Date: Fri, 7 May 2021 18:08:42 +0200 Subject: [PATCH 06/34] Update Serilog dependency version --- .../Serilog.Formatting.Compact.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index c2bdfba..f2d2d30 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -19,7 +19,7 @@ - + From 8393e0ab8c2bc746fc733a4f20731b9e1f20f811 Mon Sep 17 00:00:00 2001 From: Nicholas Blumhardt Date: Wed, 12 May 2021 08:25:36 +1000 Subject: [PATCH 07/34] Update publishing key --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 699d563..eafd3e0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,7 +12,7 @@ artifacts: deploy: - provider: NuGet api_key: - secure: ptRAVPZZO/hlZUv5e/yLnHF7aAh8tQmBfvLt64Qrvhoe7I/mbbPNI6RYm92g5EzG + secure: YO9JNl+tIGXyO5L8NRjyl0eI0kJ1mwYFR41a6B2hFdqJ/257Kc92KGzIwp/CdqIg skip_symbols: true on: branch: /^(master|dev)$/ From 2141692e88843ef41c18cf7f013501c4141c77e2 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Sat, 4 Feb 2023 06:50:41 +1100 Subject: [PATCH 08/34] build on VS 2022 --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index eafd3e0..1febb4a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,6 +1,6 @@ version: '{build}' skip_tags: true -image: Visual Studio 2019 +image: Visual Studio 2022 configuration: Release install: - ps: ./Setup.ps1 From b7b9ef9def828fb234f928c02e76ea0839276d3d Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Thu, 6 Jul 2023 17:22:59 +0200 Subject: [PATCH 09/34] supported targets: netstandard2.0, net6.0 updated packages in test proj --- CHANGES.md | 2 ++ appveyor.yml | 4 ++-- global.json | 5 ----- .../Serilog.Formatting.Compact.csproj | 2 +- .../Serilog.Formatting.Compact.Tests.csproj | 14 ++++++++------ 5 files changed, 13 insertions(+), 14 deletions(-) delete mode 100644 global.json diff --git a/CHANGES.md b/CHANGES.md index e69de29..10983ba 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -0,0 +1,2 @@ +supported targets: netstandard2.0, net6.0 +updated packages in test proj \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml index 699d563..ae8bdd0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,12 +1,12 @@ version: '{build}' skip_tags: true -image: Visual Studio 2019 +image: Visual Studio 2022 configuration: Release install: - ps: ./Setup.ps1 build_script: - ps: ./Build.ps1 -test: off +test: false artifacts: - path: artifacts/Serilog.*.nupkg deploy: diff --git a/global.json b/global.json deleted file mode 100644 index 2223a05..0000000 --- a/global.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "sdk": { - "version": "3.0.100" - } -} \ No newline at end of file diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index 0d477cd..3c25819 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -4,7 +4,7 @@ A simple, compact JSON-based event format for Serilog. 1.1.0 Serilog Contributors - net452;netstandard1.1;netstandard2.0 + net6.0;netstandard2.0 true true Serilog.Formatting.Compact diff --git a/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj b/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj index 594962b..dd03147 100644 --- a/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj +++ b/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj @@ -1,7 +1,7 @@ - net452;netcoreapp2.1 + net6.0 Serilog.Formatting.Compact.Tests ../../assets/Serilog.snk true @@ -11,11 +11,13 @@ - - - - - + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + From ae9b27a0928856b9a2d29029f7721ae0d6d16e24 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Thu, 6 Jul 2023 18:32:52 +0200 Subject: [PATCH 10/34] add argument CultureInfo.InvariantCulture to force consistent formatting behavior --- .../Formatting/Compact/CompactJsonFormatter.cs | 5 +++-- .../Formatting/Compact/RenderedCompactJsonFormatter.cs | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs b/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs index e2ead70..3a67c4b 100644 --- a/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs +++ b/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs @@ -13,6 +13,7 @@ // limitations under the License. using System; +using System.Globalization; using System.IO; using System.Linq; using Serilog.Events; @@ -76,12 +77,12 @@ public static void FormatEvent(LogEvent logEvent, TextWriter output, JsonValueFo { output.Write(",\"@r\":["); var delim = ""; - foreach (var r in tokensWithFormat) + foreach (PropertyToken r in tokensWithFormat) { output.Write(delim); delim = ","; var space = new StringWriter(); - r.Render(logEvent.Properties, space); + r.Render(logEvent.Properties, space, CultureInfo.InvariantCulture); JsonValueFormatter.WriteQuotedJsonString(space.ToString(), output); } output.Write(']'); diff --git a/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs b/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs index d76ecbf..4b37160 100644 --- a/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs +++ b/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs @@ -13,6 +13,7 @@ // limitations under the License. using System; +using System.Globalization; using System.IO; using Serilog.Events; using Serilog.Formatting.Json; @@ -63,11 +64,11 @@ public static void FormatEvent(LogEvent logEvent, TextWriter output, JsonValueFo output.Write("{\"@t\":\""); output.Write(logEvent.Timestamp.UtcDateTime.ToString("O")); output.Write("\",\"@m\":"); - var message = logEvent.MessageTemplate.Render(logEvent.Properties); + var message = logEvent.MessageTemplate.Render(logEvent.Properties, CultureInfo.InvariantCulture); JsonValueFormatter.WriteQuotedJsonString(message, output); output.Write(",\"@i\":\""); var id = EventIdHash.Compute(logEvent.MessageTemplate.Text); - output.Write(id.ToString("x8")); + output.Write(id.ToString("x8",CultureInfo.InvariantCulture)); output.Write('"'); if (logEvent.Level != LogEventLevel.Information) From b0adbdaab5a67f591db7a40cdccd88342c318000 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Thu, 6 Jul 2023 18:34:48 +0200 Subject: [PATCH 11/34] PackageIconUrl is deprecated, added serilog-extension-nuget.png to local project folder --- .../Serilog.Formatting.Compact.csproj | 67 +++++++++++------- .../serilog-extension-nuget.png | Bin 0 -> 22378 bytes 2 files changed, 42 insertions(+), 25 deletions(-) create mode 100644 src/Serilog.Formatting.Compact/serilog-extension-nuget.png diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index 3c25819..8d225be 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -1,30 +1,47 @@ - + - - A simple, compact JSON-based event format for Serilog. - 1.1.0 - Serilog Contributors - net6.0;netstandard2.0 - true - true - Serilog.Formatting.Compact - ../../assets/Serilog.snk - true - true - Serilog.Formatting.Compact - serilog;json - http://serilog.net/images/serilog-extension-nuget.png - https://github.com/serilog/serilog-formatting-compact - Apache-2.0 - + + A simple, compact JSON-based event format for Serilog. + 3.0.0 + Serilog Contributors + net6.0;netstandard2.0 + true + true + Serilog.Formatting.Compact + ../../assets/Serilog.snk + true + true + serilog-extension-nuget.png + Serilog.Formatting.Compact + serilog;json + + https://github.com/serilog/serilog-formatting-compact + Apache-2.0 + True + Serilog.Formatting.Compact + https://github.com/serilog/serilog-formatting-compact + git + 6.0-recommended + + - - - + + 5 + - - - - + + 5 + + + + + + + + + True + + + diff --git a/src/Serilog.Formatting.Compact/serilog-extension-nuget.png b/src/Serilog.Formatting.Compact/serilog-extension-nuget.png new file mode 100644 index 0000000000000000000000000000000000000000..1dfe4308b664e684217d436367a25bf91308f436 GIT binary patch literal 22378 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 i_~_ijCV{QK6Akww67qFyi&!`pmt Date: Thu, 6 Jul 2023 18:36:23 +0200 Subject: [PATCH 12/34] updated formatting benchmark --- test/Serilog.Formatting.Compact.Tests/FormattingBenchmarks.cs | 2 +- .../FormattingBenchmarksConfig.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Serilog.Formatting.Compact.Tests/FormattingBenchmarks.cs b/test/Serilog.Formatting.Compact.Tests/FormattingBenchmarks.cs index fa2cc5c..b637c11 100644 --- a/test/Serilog.Formatting.Compact.Tests/FormattingBenchmarks.cs +++ b/test/Serilog.Formatting.Compact.Tests/FormattingBenchmarks.cs @@ -30,7 +30,7 @@ public FormattingBenchmarks() StringWriter _buffer; - [Setup] + [GlobalSetup] public void InitBuffer() { _buffer = new StringWriter(); diff --git a/test/Serilog.Formatting.Compact.Tests/FormattingBenchmarksConfig.cs b/test/Serilog.Formatting.Compact.Tests/FormattingBenchmarksConfig.cs index 33f0f7c..b0bcddd 100644 --- a/test/Serilog.Formatting.Compact.Tests/FormattingBenchmarksConfig.cs +++ b/test/Serilog.Formatting.Compact.Tests/FormattingBenchmarksConfig.cs @@ -7,7 +7,7 @@ public class FormattingBenchmarksConfig : ManualConfig { public FormattingBenchmarksConfig() { - this.Add(Job.Default.WithTargetCount(new Count(10))); + this.AddJob(Job.Default.WithIterationCount(10)); } } } \ No newline at end of file From 973c40fd070cc6473f2d853d807df6ff6b0d05c1 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Thu, 6 Jul 2023 19:37:24 +0200 Subject: [PATCH 13/34] restored global.json, SDK 7.0.300 --- global.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 global.json diff --git a/global.json b/global.json new file mode 100644 index 0000000..8cf5b51 --- /dev/null +++ b/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "7.0.300" + } +} \ No newline at end of file From 5ad414d1884fb8624a0105e24264d579b3922584 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Thu, 6 Jul 2023 19:52:02 +0200 Subject: [PATCH 14/34] SDK version 7.0.8 --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index 8cf5b51..4574a82 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "7.0.300" + "version": "7.0.8" } } \ No newline at end of file From f93b3df254a4b5910f874c388e11e3693b019f1d Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Thu, 6 Jul 2023 19:59:19 +0200 Subject: [PATCH 15/34] AppVeyor SDK 7.0.304 --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index 4574a82..8960f9e 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "7.0.8" + "version": "7.0.304" } } \ No newline at end of file From 4f35478d00d2097e0eaf452ac21823d9d3fb40f4 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Thu, 6 Jul 2023 20:47:07 +0200 Subject: [PATCH 16/34] replaced Build.ps1 with adapted Build.ps1 from serilog project --- Build.ps1 | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/Build.ps1 b/Build.ps1 index 0515652..ec1e9ab 100644 --- a/Build.ps1 +++ b/Build.ps1 @@ -1,29 +1,39 @@ +Write-Output "build: Build started" + Push-Location $PSScriptRoot -if(Test-Path .\artifacts) { Remove-Item .\artifacts -Force -Recurse } +if(Test-Path .\artifacts) { + Write-Output "build: Cleaning .\artifacts" + Remove-Item .\artifacts -Force -Recurse +} -& dotnet restore --no-cache +$branch = @{ $true = $env:APPVEYOR_REPO_BRANCH; $false = $(git symbolic-ref --short -q HEAD) }[$NULL -ne $env:APPVEYOR_REPO_BRANCH]; +$revision = @{ $true = "{0:00000}" -f [convert]::ToInt32("0" + $env:APPVEYOR_BUILD_NUMBER, 10); $false = "local" }[$NULL -ne $env:APPVEYOR_BUILD_NUMBER]; +$suffix = @{ $true = ""; $false = "$($branch.Substring(0, [math]::Min(10,$branch.Length)))-$revision"}[$branch -eq "main" -and $revision -ne "local"] +$commitHash = $(git rev-parse --short HEAD) +$buildSuffix = @{ $true = "$($suffix)-$($commitHash)"; $false = "$($branch)-$($commitHash)" }[$suffix -ne ""] -$branch = @{ $true = $env:APPVEYOR_REPO_BRANCH; $false = $(git symbolic-ref --short -q HEAD) }[$env:APPVEYOR_REPO_BRANCH -ne $NULL]; -$revision = @{ $true = "{0:00000}" -f [convert]::ToInt32("0" + $env:APPVEYOR_BUILD_NUMBER, 10); $false = "local" }[$env:APPVEYOR_BUILD_NUMBER -ne $NULL]; -$suffix = @{ $true = ""; $false = "$branch-$revision"}[$branch -eq "master" -and $revision -ne "local"] +Write-Output "build: Package version suffix is $suffix" +Write-Output "build: Build version suffix is $buildSuffix" -foreach ($src in ls src/Serilog.*) { - Push-Location $src +& dotnet build --configuration Release --version-suffix=$buildSuffix /p:ContinuousIntegrationBuild=true - & dotnet pack -c Release -o ..\..\.\artifacts --version-suffix=$suffix - if($LASTEXITCODE -ne 0) { exit 1 } +if($LASTEXITCODE -ne 0) { throw 'build failed' } - Pop-Location +if($suffix) { + & dotnet pack src\Serilog.Formatting.Compact --configuration Release --no-build --no-restore -o artifacts --version-suffix=$suffix +} else { + & dotnet pack src\Serilog.Formatting.Compact --configuration Release --no-build --no-restore -o artifacts } -foreach ($test in ls test/Serilog.*.Tests) { - Push-Location $test +if($LASTEXITCODE -ne 0) { throw 'pack failed' } - & dotnet test -c Release - if($LASTEXITCODE -ne 0) { exit 2 } +Write-Output "build: Testing" - Pop-Location -} +& dotnet test test\Serilog.Formatting.Compact.Tests --configuration Release --no-build --no-restore + +if($LASTEXITCODE -ne 0) { throw 'unit tests failed' } + +# & dotnet test test\Serilog.Formatting.Compact.ApprovalTests --configuration Release --no-build --no-restore -Pop-Location +# if($LASTEXITCODE -ne 0) { throw 'approval tests failed' } From b7b063d27c319c88432eb54e8d71290484a7b4b6 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Thu, 6 Jul 2023 21:03:34 +0200 Subject: [PATCH 17/34] test proj, removed obsolete Condition for TargetFramework net452 --- .../Serilog.Formatting.Compact.Tests.csproj | 5 ----- 1 file changed, 5 deletions(-) diff --git a/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj b/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj index dd03147..2c35a52 100644 --- a/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj +++ b/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj @@ -20,11 +20,6 @@ - - - - - From 1df7654b40673aff527be177feb4142c91b24466 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Mon, 10 Jul 2023 13:03:09 +0200 Subject: [PATCH 18/34] add TargetFrameworks --- .../Serilog.Formatting.Compact.csproj | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index 8d225be..b86d262 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -2,9 +2,10 @@ A simple, compact JSON-based event format for Serilog. - 3.0.0 + 2.0.0 Serilog Contributors - net6.0;netstandard2.0 + net462;net471 + $(TargetFrameworks);netstandard2.1;netstandard2.0;net5.0;net6.0;net7.0 true true Serilog.Formatting.Compact From 03442a32b975ef0330796eca74948f5f1aa5253a Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Mon, 10 Jul 2023 13:03:32 +0200 Subject: [PATCH 19/34] removed duplicate PackageIcon --- src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index b86d262..6113a23 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -23,7 +23,6 @@ https://github.com/serilog/serilog-formatting-compact git 6.0-recommended - From 271192ce4ff64a72b19c50b2c8f8e388655f7448 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Mon, 10 Jul 2023 13:05:48 +0200 Subject: [PATCH 20/34] removed AssemblyName, PackageId and Title from csproj - all are correctly defaulted by the build system --- .../Serilog.Formatting.Compact.csproj | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index 6113a23..a309c85 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -8,18 +8,15 @@ $(TargetFrameworks);netstandard2.1;netstandard2.0;net5.0;net6.0;net7.0 true true - Serilog.Formatting.Compact ../../assets/Serilog.snk true true serilog-extension-nuget.png - Serilog.Formatting.Compact serilog;json https://github.com/serilog/serilog-formatting-compact Apache-2.0 True - Serilog.Formatting.Compact https://github.com/serilog/serilog-formatting-compact git 6.0-recommended From e338b0cb6e7d090a31ab15a59e2ee4939afb2e69 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Mon, 10 Jul 2023 13:07:53 +0200 Subject: [PATCH 21/34] add target frameworks in test proj --- .../Serilog.Formatting.Compact.Tests.csproj | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj b/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj index 2c35a52..6e5922c 100644 --- a/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj +++ b/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj @@ -1,27 +1,28 @@ - + - - net6.0 - Serilog.Formatting.Compact.Tests - ../../assets/Serilog.snk - true - true - false - true - + + net462;net48 + $(TargetFrameworks);net7.0;net6.0;net5.0;netcoreapp3.1; + Serilog.Formatting.Compact.Tests + ../../assets/Serilog.snk + true + true + false + true + - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + - - - + + + From 011908d6634edd57af01a70c88f393f82d424671 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Mon, 10 Jul 2023 13:08:20 +0200 Subject: [PATCH 22/34] from build.ps1 removed commented out code --- Build.ps1 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Build.ps1 b/Build.ps1 index ec1e9ab..1178d7c 100644 --- a/Build.ps1 +++ b/Build.ps1 @@ -33,7 +33,3 @@ Write-Output "build: Testing" & dotnet test test\Serilog.Formatting.Compact.Tests --configuration Release --no-build --no-restore if($LASTEXITCODE -ne 0) { throw 'unit tests failed' } - -# & dotnet test test\Serilog.Formatting.Compact.ApprovalTests --configuration Release --no-build --no-restore - -# if($LASTEXITCODE -ne 0) { throw 'approval tests failed' } From c6f1da85d7173b3c08138a986701333df926b064 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Mon, 10 Jul 2023 13:30:21 +0200 Subject: [PATCH 23/34] just sorted target fw's in csproj --- .../Serilog.Formatting.Compact.csproj | 2 +- .../Serilog.Formatting.Compact.Tests.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index a309c85..0c641b7 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -5,7 +5,7 @@ 2.0.0 Serilog Contributors net462;net471 - $(TargetFrameworks);netstandard2.1;netstandard2.0;net5.0;net6.0;net7.0 + $(TargetFrameworks);netstandard2.0;netstandard2.1;net6.0;net7.0 true true ../../assets/Serilog.snk diff --git a/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj b/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj index 6e5922c..930faa9 100644 --- a/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj +++ b/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj @@ -2,7 +2,7 @@ net462;net48 - $(TargetFrameworks);net7.0;net6.0;net5.0;netcoreapp3.1; + $(TargetFrameworks);netcoreapp3.1;net6.0;net7.0; Serilog.Formatting.Compact.Tests ../../assets/Serilog.snk true From f8d768fd5078bfda0f6ba84943d5fae47c6a33e0 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Mon, 10 Jul 2023 13:31:20 +0200 Subject: [PATCH 24/34] csproj, package icon is right above commented out (and obsolete) package icon url --- src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index 0c641b7..5d69c54 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -11,6 +11,7 @@ ../../assets/Serilog.snk true true + serilog-extension-nuget.png serilog;json From 6174c3c439ac625e846c8e92ca617901c6ddd098 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Mon, 10 Jul 2023 13:31:54 +0200 Subject: [PATCH 25/34] csproj, package icon is right above commented out (and obsolete) package icon url --- src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index 5d69c54..ac9e168 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -14,7 +14,6 @@ serilog-extension-nuget.png serilog;json - https://github.com/serilog/serilog-formatting-compact Apache-2.0 True From cd3543fd20b8162a29426b4d94f770e02d11709d Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Mon, 10 Jul 2023 13:32:32 +0200 Subject: [PATCH 26/34] test csproj, add missing PackageReference to "Newtonsoft.Json" --- .../Serilog.Formatting.Compact.Tests.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj b/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj index 930faa9..6a3a324 100644 --- a/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj +++ b/test/Serilog.Formatting.Compact.Tests/Serilog.Formatting.Compact.Tests.csproj @@ -13,6 +13,7 @@ + all runtime; build; native; contentfiles; analyzers; buildtransitive From 1d7e11b5ab78437bdc51454d5461cf43a864cd60 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Tue, 11 Jul 2023 08:12:38 +0200 Subject: [PATCH 27/34] Use less confusing name for rendered `JsonFormatter` in the benchmarks table [skip ci], from commit 06ef9d87 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d291a49..902ab2c 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ See `test/Serilog.Formatting.Compact.Tests/FormattingBenchmarks.cs`. |:------------------------------ |----------: |---------: |------: | | `JsonFormatter` | 11.2775 µs | 0.0682 µs | 1.00 | | `CompactJsonFormatter` | 6.0315 µs | 0.0429 µs | 0.53 | -| `RenderedJsonFormatter` | 13.7585 µs | 0.1194 µs | 1.22 | +| `JsonFormatter(renderMessage: true)` | 13.7585 µs | 0.1194 µs | 1.22 | | `RenderedCompactJsonFormatter` | 7.0680 µs | 0.0605 µs | 0.63 | ### Tools From 29f02b3c2a51bf54a3b06b674a2c333c8a77136b Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Tue, 11 Jul 2023 08:15:07 +0200 Subject: [PATCH 28/34] merged 468c6435, add link to analoogy log viewer in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 902ab2c..45c012e 100644 --- a/README.md +++ b/README.md @@ -150,4 +150,4 @@ Several tools are available for working with the CLEF format. * **[`clef-tool`](https://github.com/datalust/clef-tool)** - a CLI application for processing CLEF files * **[Compact Log Format Viewer](https://github.com/warrenbuckley/Compact-Log-Format-Viewer)** - a cross-platform viewer for CLEF JSON files * **[_Serilog.Formatting.Compact.Reader_](https://github.com/serilog/serilog-formatting-compact-reader)** - convert CLEF JSON documents back into Serilog `LogEvent`s - + * **[Analogy.LogViewer.Serilog](https://github.com/Analogy-LogViewer/Analogy.LogViewer.Serilog)** - Analogy Serilog Parser for CLEF Compact JSON format for [Analogy Log Viewer](https://github.com/Analogy-LogViewer/Analogy.LogViewer). From 0f63aeb2e26075c9b74d1282b8129ac4cd95c2f6 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Tue, 11 Jul 2023 08:16:11 +0200 Subject: [PATCH 29/34] merged ad35ff5f, Simplify description of Analogy CLEF parser --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 45c012e..7ff1fee 100644 --- a/README.md +++ b/README.md @@ -150,4 +150,4 @@ Several tools are available for working with the CLEF format. * **[`clef-tool`](https://github.com/datalust/clef-tool)** - a CLI application for processing CLEF files * **[Compact Log Format Viewer](https://github.com/warrenbuckley/Compact-Log-Format-Viewer)** - a cross-platform viewer for CLEF JSON files * **[_Serilog.Formatting.Compact.Reader_](https://github.com/serilog/serilog-formatting-compact-reader)** - convert CLEF JSON documents back into Serilog `LogEvent`s - * **[Analogy.LogViewer.Serilog](https://github.com/Analogy-LogViewer/Analogy.LogViewer.Serilog)** - Analogy Serilog Parser for CLEF Compact JSON format for [Analogy Log Viewer](https://github.com/Analogy-LogViewer/Analogy.LogViewer). + * **[Analogy.LogViewer.Serilog](https://github.com/Analogy-LogViewer/Analogy.LogViewer.Serilog)** - CLEF parser for [Analogy Log Viewer](https://github.com/Analogy-LogViewer/Analogy.LogViewer). From eaf995eace077f2e46c9613276717d38e9868003 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Tue, 11 Jul 2023 08:17:26 +0200 Subject: [PATCH 30/34] merged 1eca9e52, README formatting tidy-up; alphabetically sort tools; add `seqcli` --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7ff1fee..0514141 100644 --- a/README.md +++ b/README.md @@ -147,7 +147,9 @@ See `test/Serilog.Formatting.Compact.Tests/FormattingBenchmarks.cs`. Several tools are available for working with the CLEF format. + * **[_Analogy.LogViewer.Serilog_](https://github.com/Analogy-LogViewer/Analogy.LogViewer.Serilog)** - CLEF parser for [Analogy Log Viewer](https://github.com/Analogy-LogViewer/Analogy.LogViewer) * **[`clef-tool`](https://github.com/datalust/clef-tool)** - a CLI application for processing CLEF files - * **[Compact Log Format Viewer](https://github.com/warrenbuckley/Compact-Log-Format-Viewer)** - a cross-platform viewer for CLEF JSON files - * **[_Serilog.Formatting.Compact.Reader_](https://github.com/serilog/serilog-formatting-compact-reader)** - convert CLEF JSON documents back into Serilog `LogEvent`s - * **[Analogy.LogViewer.Serilog](https://github.com/Analogy-LogViewer/Analogy.LogViewer.Serilog)** - CLEF parser for [Analogy Log Viewer](https://github.com/Analogy-LogViewer/Analogy.LogViewer). + * **[Compact Log Format Viewer](https://github.com/warrenbuckley/Compact-Log-Format-Viewer)** - a cross-platform viewer for CLEF files + * **[`seqcli`](https://github.com/datalust/seqcli)** - pretty-`print` CLEF files at the command-line, or `ingest` CLEF files into [Seq](https://datalust.co/seq) for search, and analysis + * **[_Serilog.Formatting.Compact.Reader_](https://github.com/serilog/serilog-formatting-compact-reader)** - convert CLEF documents back into Serilog `LogEvent`s + \ No newline at end of file From 8d584ca0a07d5df7836b40d2f3f9cda11c426048 Mon Sep 17 00:00:00 2001 From: Peter Metz Date: Tue, 11 Jul 2023 08:19:00 +0200 Subject: [PATCH 31/34] merged 8393e0ab, Update publishing key --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index ae8bdd0..3b7286f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,7 +12,7 @@ artifacts: deploy: - provider: NuGet api_key: - secure: ptRAVPZZO/hlZUv5e/yLnHF7aAh8tQmBfvLt64Qrvhoe7I/mbbPNI6RYm92g5EzG + secure: YO9JNl+tIGXyO5L8NRjyl0eI0kJ1mwYFR41a6B2hFdqJ/257Kc92KGzIwp/CdqIg skip_symbols: true on: branch: /^(master|dev)$/ From 8d01ad241d05ee0d2bd32e4d9254b8b6534bb736 Mon Sep 17 00:00:00 2001 From: Nicholas Blumhardt Date: Tue, 3 Oct 2023 13:18:46 +1000 Subject: [PATCH 32/34] Include trace and span ids in output --- .../serilog-extension-nuget.png | Bin .../Formatting/Compact/CompactJsonFormatter.cs | 15 +++++++++++++++ .../Compact/RenderedCompactJsonFormatter.cs | 15 +++++++++++++++ .../Serilog.Formatting.Compact.csproj | 7 +++++-- .../CompactJsonFormatterTests.cs | 17 +++++++++++++++++ 5 files changed, 52 insertions(+), 2 deletions(-) rename {src/Serilog.Formatting.Compact => assets}/serilog-extension-nuget.png (100%) diff --git a/src/Serilog.Formatting.Compact/serilog-extension-nuget.png b/assets/serilog-extension-nuget.png similarity index 100% rename from src/Serilog.Formatting.Compact/serilog-extension-nuget.png rename to assets/serilog-extension-nuget.png diff --git a/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs b/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs index 3a67c4b..992740c 100644 --- a/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs +++ b/src/Serilog.Formatting.Compact/Formatting/Compact/CompactJsonFormatter.cs @@ -19,6 +19,7 @@ using Serilog.Events; using Serilog.Formatting.Json; using Serilog.Parsing; +// ReSharper disable MemberCanBePrivate.Global namespace Serilog.Formatting.Compact { @@ -101,6 +102,20 @@ public static void FormatEvent(LogEvent logEvent, TextWriter output, JsonValueFo JsonValueFormatter.WriteQuotedJsonString(logEvent.Exception.ToString(), output); } + if (logEvent.TraceId != null) + { + output.Write(",\"@tr\":\""); + output.Write(logEvent.TraceId.Value.ToHexString()); + output.Write('\"'); + } + + if (logEvent.SpanId != null) + { + output.Write(",\"@sp\":\""); + output.Write(logEvent.SpanId.Value.ToHexString()); + output.Write('\"'); + } + foreach (var property in logEvent.Properties) { var name = property.Key; diff --git a/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs b/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs index 4b37160..fbe0dd2 100644 --- a/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs +++ b/src/Serilog.Formatting.Compact/Formatting/Compact/RenderedCompactJsonFormatter.cs @@ -17,6 +17,7 @@ using System.IO; using Serilog.Events; using Serilog.Formatting.Json; +// ReSharper disable MemberCanBePrivate.Global namespace Serilog.Formatting.Compact { @@ -83,7 +84,21 @@ public static void FormatEvent(LogEvent logEvent, TextWriter output, JsonValueFo output.Write(",\"@x\":"); JsonValueFormatter.WriteQuotedJsonString(logEvent.Exception.ToString(), output); } + + if (logEvent.TraceId != null) + { + output.Write(",\"@tr\":\""); + output.Write(logEvent.TraceId.Value.ToHexString()); + output.Write('\"'); + } + if (logEvent.SpanId != null) + { + output.Write(",\"@sp\":\""); + output.Write(logEvent.SpanId.Value.ToHexString()); + output.Write('\"'); + } + foreach (var property in logEvent.Properties) { var name = property.Key; diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index baf24e6..167042a 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -19,6 +19,8 @@ https://github.com/serilog/serilog-formatting-compact git 6.0-recommended + Serilog + README.md @@ -26,8 +28,9 @@ - - + + + diff --git a/test/Serilog.Formatting.Compact.Tests/CompactJsonFormatterTests.cs b/test/Serilog.Formatting.Compact.Tests/CompactJsonFormatterTests.cs index e5c06ba..bfc4371 100644 --- a/test/Serilog.Formatting.Compact.Tests/CompactJsonFormatterTests.cs +++ b/test/Serilog.Formatting.Compact.Tests/CompactJsonFormatterTests.cs @@ -1,7 +1,11 @@ using System; +using System.Diagnostics; +using System.Linq; using Newtonsoft.Json.Linq; +using Serilog.Events; using Xunit; using Serilog.Formatting.Compact.Tests.Support; +using Serilog.Parsing; namespace Serilog.Formatting.Compact.Tests @@ -77,5 +81,18 @@ public void TimestampIsUtc() Assert.True(jobject.TryGetValue("@t", out val)); Assert.EndsWith("Z", val.ToObject()); } + + [Fact] + public void TraceAndSpanIdsGenerateValidJson() + { + var traceId = ActivityTraceId.CreateRandom(); + var spanId = ActivitySpanId.CreateRandom(); + var evt = new LogEvent(DateTimeOffset.Now, LogEventLevel.Information, null, + new MessageTemplate(Enumerable.Empty()), Enumerable.Empty(), + traceId, spanId); + var json = AssertValidJson(log => log.Write(evt)); + Assert.Equal(traceId.ToHexString(), json["@tr"]); + Assert.Equal(spanId.ToHexString(), json["@sp"]); + } } } From 4fdb9e8c1372132678d9c157a8429922f66f8db2 Mon Sep 17 00:00:00 2001 From: Nicholas Blumhardt Date: Wed, 4 Oct 2023 12:14:24 +1000 Subject: [PATCH 33/34] Update publishing key --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 3b7286f..b2e8553 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,7 +12,7 @@ artifacts: deploy: - provider: NuGet api_key: - secure: YO9JNl+tIGXyO5L8NRjyl0eI0kJ1mwYFR41a6B2hFdqJ/257Kc92KGzIwp/CdqIg + secure: 4nUKbHgmKmedr6dDtCT2uWVLeQl+tFqO+y9LvRi3nk7cvD/DnOYI1ZqajsgDqxnH skip_symbols: true on: branch: /^(master|dev)$/ From 8082e563f2ecfb7a0d3dc46641d7f0e81fca7e7a Mon Sep 17 00:00:00 2001 From: Nicholas Blumhardt Date: Thu, 9 Nov 2023 16:30:57 +1000 Subject: [PATCH 34/34] Update to Serilog 3.1 RTM --- .../Serilog.Formatting.Compact.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj index 167042a..06def8b 100644 --- a/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj +++ b/src/Serilog.Formatting.Compact/Serilog.Formatting.Compact.csproj @@ -28,7 +28,7 @@ - +