From c073db44b9b58d74ce25951a74330d705e8d69c9 Mon Sep 17 00:00:00 2001 From: Nicholas Blumhardt Date: Wed, 5 Oct 2016 14:14:08 +1000 Subject: [PATCH 1/4] Dev version bump [Skip CI] --- src/Serilog.Sinks.Observable/project.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Serilog.Sinks.Observable/project.json b/src/Serilog.Sinks.Observable/project.json index fad2b23..c03685a 100644 --- a/src/Serilog.Sinks.Observable/project.json +++ b/src/Serilog.Sinks.Observable/project.json @@ -1,5 +1,5 @@ { - "version": "2.0.1", + "version": "2.0.2", "packOptions": { "description": "Write Serilog events to observers (Rx) through an IObservable.", "authors": [ "Serilog Contributors" ], @@ -23,4 +23,4 @@ } } } -} \ No newline at end of file +} From 58e6416ef0ca13711f10f3a6012adebc78e0dee0 Mon Sep 17 00:00:00 2001 From: Matthew Erbs Date: Sat, 4 Mar 2017 08:05:43 +1000 Subject: [PATCH 2/4] Type fix [Skip CI] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 59c8168..e251ce2 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Log.Logger = new LoggerConfiguration() .Subscribe()) .CreateLogger(); -Log.Infomation("Hello, observers!"); +Log.Information("Hello, observers!"); Log.CloseAndFlush(); ``` From 0a78206af6e797a7dd97b84f516eea6959d464e8 Mon Sep 17 00:00:00 2001 From: Sergey Komisarchik Date: Wed, 18 Oct 2017 09:01:35 +0300 Subject: [PATCH 3/4] update to VS 2017 tooling --- .editorconfig | 7 +++- Build.ps1 | 29 +++++++++----- appveyor.yml | 10 +---- global.json | 6 --- serilog-sinks-observable.sln | 40 ++++++++++--------- .../Serilog.Sinks.Observable.csproj | 22 ++++++++++ .../Serilog.Sinks.Observable.xproj | 18 --------- src/Serilog.Sinks.Observable/project.json | 26 ------------ test/Serilog.Tests/Serilog.Tests.csproj | 34 ++++++++++++++++ test/Serilog.Tests/Serilog.Tests.xproj | 28 ------------- test/Serilog.Tests/project.json | 21 ---------- 11 files changed, 105 insertions(+), 136 deletions(-) delete mode 100644 global.json create mode 100644 src/Serilog.Sinks.Observable/Serilog.Sinks.Observable.csproj delete mode 100644 src/Serilog.Sinks.Observable/Serilog.Sinks.Observable.xproj delete mode 100644 src/Serilog.Sinks.Observable/project.json create mode 100644 test/Serilog.Tests/Serilog.Tests.csproj delete mode 100644 test/Serilog.Tests/Serilog.Tests.xproj delete mode 100644 test/Serilog.Tests/project.json diff --git a/.editorconfig b/.editorconfig index f76c08a..33626b2 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,5 +1,10 @@ -root=true +root = true [*] +trim_trailing_whitespace = true +insert_final_newline = true indent_style = space indent_size = 4 + +[*.{csproj,json,config,yml}] +indent_size = 2 \ No newline at end of file diff --git a/Build.ps1 b/Build.ps1 index 7c5a85f..696e773 100644 --- a/Build.ps1 +++ b/Build.ps1 @@ -12,38 +12,47 @@ if(Test-Path .\artifacts) { $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.Substring(0, [math]::Min(10,$branch.Length)))-$revision"}[$branch -eq "master" -and $revision -ne "local"] +$commitHash = $(git rev-parse --short HEAD) +$buildSuffix = @{ $true = "$($suffix)-$($commitHash)"; $false = "$($branch)-$($commitHash)" }[$suffix -ne ""] -echo "build: Version suffix is $suffix" +echo "build: Package version suffix is $suffix" +echo "build: Build version suffix is $buildSuffix" foreach ($src in ls src/*) { Push-Location $src echo "build: Packaging project in $src" - & dotnet pack -c Release -o ..\..\artifacts --version-suffix=$suffix + & dotnet build -c Release --version-suffix=$buildSuffix + + if($suffix) { + & dotnet pack -c Release --include-source --no-build -o ..\..\artifacts --version-suffix=$suffix + } else { + & dotnet pack -c Release --include-source --no-build -o ..\..\artifacts + } if($LASTEXITCODE -ne 0) { exit 1 } Pop-Location } -foreach ($test in ls test/*.PerformanceTests) { +foreach ($test in ls test/*.Tests) { Push-Location $test - echo "build: Building performance test project in $test" + echo "build: Testing project in $test" - & dotnet build -c Release - if($LASTEXITCODE -ne 0) { exit 2 } + & dotnet test -c Release + if($LASTEXITCODE -ne 0) { exit 3 } Pop-Location } -foreach ($test in ls test/*.Tests) { +foreach ($test in ls test/*.PerformanceTests) { Push-Location $test - echo "build: Testing project in $test" + echo "build: Building performance test project in $test" - & dotnet test -c Release - if($LASTEXITCODE -ne 0) { exit 3 } + & dotnet build -c Release + if($LASTEXITCODE -ne 0) { exit 2 } Pop-Location } diff --git a/appveyor.yml b/appveyor.yml index 19d0d28..7df8c2f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,16 +1,10 @@ version: '{build}' skip_tags: true -image: Visual Studio 2015 +image: Visual Studio 2017 configuration: Release -install: - - ps: mkdir -Force ".\build\" | Out-Null - - ps: Invoke-WebRequest "https://raw.githubusercontent.com/dotnet/cli/rel/1.0.0-preview2/scripts/obtain/dotnet-install.ps1" -OutFile ".\build\installcli.ps1" - - ps: $env:DOTNET_INSTALL_DIR = "$pwd\.dotnetcli" - - ps: '& .\build\installcli.ps1 -InstallDir "$env:DOTNET_INSTALL_DIR" -NoPath -Version 1.0.0-preview2-003121' - - ps: $env:Path = "$env:DOTNET_INSTALL_DIR;$env:Path" +test: off build_script: - ps: ./Build.ps1 -test: off artifacts: - path: artifacts/Serilog.*.nupkg deploy: diff --git a/global.json b/global.json deleted file mode 100644 index a2b2a41..0000000 --- a/global.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "projects": [ "src", "test" ], - "sdk": { - "version": "1.0.0-preview2-003121" - } -} diff --git a/serilog-sinks-observable.sln b/serilog-sinks-observable.sln index 08f6583..a723ba0 100644 --- a/serilog-sinks-observable.sln +++ b/serilog-sinks-observable.sln @@ -1,26 +1,27 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 +# Visual Studio 15 +VisualStudioVersion = 15.0.27004.2002 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{037440DE-440B-4129-9F7A-09B42D00397E}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "assets", "assets", "{E9D1B5E1-DEB9-4A04-8BAB-24EC7240ADAF}" ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + .gitattributes = .gitattributes + .gitignore = .gitignore appveyor.yml = appveyor.yml Build.ps1 = Build.ps1 CHANGES.md = CHANGES.md - global.json = global.json - NuGet.Config = NuGet.Config + LICENSE = LICENSE README.md = README.md assets\Serilog.snk = assets\Serilog.snk EndProjectSection EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Serilog.Sinks.Observable", "src\Serilog.Sinks.Observable\Serilog.Sinks.Observable.xproj", "{8D6C0BB9-D04D-49B6-9043-4A776AD275D5}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{9D8490A7-A075-4E53-A5F2-A960CF4DB3E7}" EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Serilog.Tests", "test\Serilog.Tests\Serilog.Tests.xproj", "{3C2D8E01-5580-426A-BDD9-EC59CD98E618}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Serilog.Sinks.Observable", "src\Serilog.Sinks.Observable\Serilog.Sinks.Observable.csproj", "{727C1498-20A8-4C1A-BE5F-8AB762F920DC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Serilog.Tests", "test\Serilog.Tests\Serilog.Tests.csproj", "{C88A987D-3E79-481C-9DD7-441371EAF9E6}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -28,20 +29,23 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8D6C0BB9-D04D-49B6-9043-4A776AD275D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8D6C0BB9-D04D-49B6-9043-4A776AD275D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8D6C0BB9-D04D-49B6-9043-4A776AD275D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8D6C0BB9-D04D-49B6-9043-4A776AD275D5}.Release|Any CPU.Build.0 = Release|Any CPU - {3C2D8E01-5580-426A-BDD9-EC59CD98E618}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3C2D8E01-5580-426A-BDD9-EC59CD98E618}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3C2D8E01-5580-426A-BDD9-EC59CD98E618}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3C2D8E01-5580-426A-BDD9-EC59CD98E618}.Release|Any CPU.Build.0 = Release|Any CPU + {727C1498-20A8-4C1A-BE5F-8AB762F920DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {727C1498-20A8-4C1A-BE5F-8AB762F920DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {727C1498-20A8-4C1A-BE5F-8AB762F920DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {727C1498-20A8-4C1A-BE5F-8AB762F920DC}.Release|Any CPU.Build.0 = Release|Any CPU + {C88A987D-3E79-481C-9DD7-441371EAF9E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C88A987D-3E79-481C-9DD7-441371EAF9E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C88A987D-3E79-481C-9DD7-441371EAF9E6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C88A987D-3E79-481C-9DD7-441371EAF9E6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {8D6C0BB9-D04D-49B6-9043-4A776AD275D5} = {037440DE-440B-4129-9F7A-09B42D00397E} - {3C2D8E01-5580-426A-BDD9-EC59CD98E618} = {9D8490A7-A075-4E53-A5F2-A960CF4DB3E7} + {727C1498-20A8-4C1A-BE5F-8AB762F920DC} = {037440DE-440B-4129-9F7A-09B42D00397E} + {C88A987D-3E79-481C-9DD7-441371EAF9E6} = {9D8490A7-A075-4E53-A5F2-A960CF4DB3E7} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {F7520405-4472-4800-B649-95134A0863F4} EndGlobalSection EndGlobal diff --git a/src/Serilog.Sinks.Observable/Serilog.Sinks.Observable.csproj b/src/Serilog.Sinks.Observable/Serilog.Sinks.Observable.csproj new file mode 100644 index 0000000..a0c5adc --- /dev/null +++ b/src/Serilog.Sinks.Observable/Serilog.Sinks.Observable.csproj @@ -0,0 +1,22 @@ + + + + 2.0.2 + net45;netstandard1.0 + Serilog.Sinks.Observable + ../../assets/Serilog.snk + true + true + Serilog.Sinks.Observable + serilog;observable;reactive + http://serilog.net/images/serilog-sink-nuget.png + http://serilog.net + http://www.apache.org/licenses/LICENSE-2.0 + false + + + + + + + diff --git a/src/Serilog.Sinks.Observable/Serilog.Sinks.Observable.xproj b/src/Serilog.Sinks.Observable/Serilog.Sinks.Observable.xproj deleted file mode 100644 index 52bb381..0000000 --- a/src/Serilog.Sinks.Observable/Serilog.Sinks.Observable.xproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - 14.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - 8d6c0bb9-d04d-49b6-9043-4a776ad275d5 - Serilog - ..\..\artifacts\obj\$(MSBuildProjectName) - .\bin\ - - - 2.0 - - - \ No newline at end of file diff --git a/src/Serilog.Sinks.Observable/project.json b/src/Serilog.Sinks.Observable/project.json deleted file mode 100644 index c03685a..0000000 --- a/src/Serilog.Sinks.Observable/project.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": "2.0.2", - "packOptions": { - "description": "Write Serilog events to observers (Rx) through an IObservable.", - "authors": [ "Serilog Contributors" ], - "tags": [ "serilog", "observable", "reactive" ], - "projectUrl": "http://serilog.net", - "licenseUrl": "http://www.apache.org/licenses/LICENSE-2.0", - "iconUrl": "http://serilog.net/images/serilog-sink-nuget.png" - }, - "buildOptions": { - "keyFile": "../../assets/Serilog.snk" - }, - "dependencies": { - "Serilog": "2.0.0" - }, - "frameworks": { - "net45": { - }, - "netstandard1.1": { - "dependencies": { - "System.Collections.Concurrent": "4.0.12" - } - } - } -} diff --git a/test/Serilog.Tests/Serilog.Tests.csproj b/test/Serilog.Tests/Serilog.Tests.csproj new file mode 100644 index 0000000..d4540f3 --- /dev/null +++ b/test/Serilog.Tests/Serilog.Tests.csproj @@ -0,0 +1,34 @@ + + + + net452 + ../../assets/Serilog.snk + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/Serilog.Tests/Serilog.Tests.xproj b/test/Serilog.Tests/Serilog.Tests.xproj deleted file mode 100644 index ea9248f..0000000 --- a/test/Serilog.Tests/Serilog.Tests.xproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - 14.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - 3c2d8e01-5580-426a-bdd9-ec59cd98e618 - Serilog.Tests - ..\..\artifacts\obj\$(MSBuildProjectName) - .\bin\ - - - 2.0 - True - - - True - - - True - - - - - - \ No newline at end of file diff --git a/test/Serilog.Tests/project.json b/test/Serilog.Tests/project.json deleted file mode 100644 index 58c38b8..0000000 --- a/test/Serilog.Tests/project.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "testRunner": "xunit", - "dependencies": { - "Rx-Main": "2.2.5", - "Serilog": "2.0.0", - "xunit": "2.2.0-*", - "dotnet-test-xunit": "2.2.0-preview2-build1029", - "Serilog.Sinks.Observable": { "target": "project" } - }, - "frameworks": { - "net4.5.2": { - "buildOptions": { - "keyFile": "../../assets/Serilog.snk", - "define": [ "APPSETTINGS", "PROCESS", "FILE_IO", "PERIODIC_BATCHING", "INTERNAL_TESTS", "REMOTING", "APPDOMAIN" ] - }, - "frameworkAssemblies": { - "System.Configuration": "" - } - } - } -} From e6b94be6b23cea74e050e99b85171ce79ef6b78b Mon Sep 17 00:00:00 2001 From: Sergey Komisarchik Date: Wed, 18 Oct 2017 09:20:45 +0300 Subject: [PATCH 4/4] fix `ObjectDisposedException` when autosubscriptions are disposed on data completion (https://github.com/serilog/serilog-sinks-observable/issues/3) --- .../Sinks/Observable/ObservableSink.cs | 11 +++++------ .../Sinks/Observable/ObservableSinkTests.cs | 8 +++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Serilog.Sinks.Observable/Sinks/Observable/ObservableSink.cs b/src/Serilog.Sinks.Observable/Sinks/Observable/ObservableSink.cs index c5c874a..aa03f7d 100644 --- a/src/Serilog.Sinks.Observable/Sinks/Observable/ObservableSink.cs +++ b/src/Serilog.Sinks.Observable/Sinks/Observable/ObservableSink.cs @@ -1,4 +1,4 @@ -// Copyright 2013-2016 Serilog Contributors +// Copyright 2013-2017 Serilog Contributors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -38,10 +38,8 @@ sealed class Unsubscriber : IDisposable public Unsubscriber(ObservableSink sink, IObserver observer) { - if (sink == null) throw new ArgumentNullException(nameof(sink)); - if (observer == null) throw new ArgumentNullException(nameof(observer)); - _sink = sink; - _observer = observer; + _sink = sink ?? throw new ArgumentNullException(nameof(sink)); + _observer = observer ?? throw new ArgumentNullException(nameof(observer)); } public void Dispose() @@ -124,11 +122,12 @@ public void Dispose() { if (_disposed) return; - _disposed = true; foreach (var observer in _observers) { observer.OnCompleted(); } + + _disposed = true; } } } diff --git a/test/Serilog.Tests/Sinks/Observable/ObservableSinkTests.cs b/test/Serilog.Tests/Sinks/Observable/ObservableSinkTests.cs index 3ad1379..b3e64a3 100644 --- a/test/Serilog.Tests/Sinks/Observable/ObservableSinkTests.cs +++ b/test/Serilog.Tests/Sinks/Observable/ObservableSinkTests.cs @@ -12,13 +12,15 @@ public void EventsAreWrittenToObservers() { var eventSeen = false; - var log = new LoggerConfiguration() + using (var log = new LoggerConfiguration() .WriteTo.Observers(events => events .Do(evt => { eventSeen = true; }) .Subscribe()) - .CreateLogger(); + .CreateLogger()) + { + log.Write(Some.InformationEvent()); + } - log.Write(Some.InformationEvent()); Assert.True(eventSeen); } }