Skip to content

Commit 06c508d

Browse files
authored
Merge pull request #299 from serilog/dev
3.4.0 Release
2 parents 651449d + d343546 commit 06c508d

27 files changed

+363
-319
lines changed

Build.ps1

Lines changed: 26 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,72 +2,59 @@ echo "build: Build started"
22

33
Push-Location $PSScriptRoot
44

5-
if (Test-Path .\artifacts) {
6-
echo "build: Cleaning .\artifacts"
7-
Remove-Item .\artifacts -Force -Recurse
5+
if(Test-Path .\artifacts) {
6+
echo "build: Cleaning .\artifacts"
7+
Remove-Item .\artifacts -Force -Recurse
88
}
99

1010
& dotnet restore --no-cache
1111

1212
$branch = @{ $true = $env:APPVEYOR_REPO_BRANCH; $false = $(git symbolic-ref --short -q HEAD) }[$env:APPVEYOR_REPO_BRANCH -ne $NULL];
1313
$revision = @{ $true = "{0:00000}" -f [convert]::ToInt32("0" + $env:APPVEYOR_BUILD_NUMBER, 10); $false = "local" }[$env:APPVEYOR_BUILD_NUMBER -ne $NULL];
1414
$suffix = @{ $true = ""; $false = "$($branch.Substring(0, [math]::Min(10,$branch.Length)))-$revision"}[$branch -eq "main" -and $revision -ne "local"]
15+
$commitHash = $(git rev-parse --short HEAD)
16+
$buildSuffix = @{ $true = "$($suffix)-$($commitHash)"; $false = "$($branch)-$($commitHash)" }[$suffix -ne ""]
1517

16-
echo "build: Version suffix is $suffix"
18+
echo "build: Package version suffix is $suffix"
19+
echo "build: Build version suffix is $buildSuffix"
1720

18-
foreach ($src in dir src/*) {
21+
foreach ($src in gci src/*) {
1922
Push-Location $src
2023

21-
echo "build: Packaging project in $src"
24+
echo "build: Packaging project in $src"
2225

23-
& dotnet pack -c Release -o ..\..\artifacts --version-suffix=$suffix -p:ContinuousIntegrationBuild=true
24-
if ($LASTEXITCODE -ne 0) { exit 1 }
26+
& dotnet build -c Release --version-suffix=$buildSuffix
2527

26-
Pop-Location
27-
}
28-
29-
foreach ($test in dir test/*.PerformanceTests) {
30-
Push-Location $test
31-
32-
echo "build: Building performance test project in $test"
33-
34-
& dotnet build -c Release
35-
if ($LASTEXITCODE -ne 0) { exit 2 }
28+
if($suffix) {
29+
& dotnet pack -c Release --include-source --no-build -o ../../artifacts --version-suffix=$suffix -p:ContinuousIntegrationBuild=true
30+
} else {
31+
& dotnet pack -c Release --include-source --no-build -o ../../artifacts -p:ContinuousIntegrationBuild=true
32+
}
33+
if($LASTEXITCODE -ne 0) { exit 1 }
3634

3735
Pop-Location
3836
}
3937

40-
foreach ($test in dir test/*.Tests) {
38+
foreach ($test in gci test/*.Tests) {
4139
Push-Location $test
4240

43-
echo "build: Testing project in $test"
44-
45-
if ($PSVersionTable.Platform -eq "Unix") {
46-
& dotnet test -c Release -f netcoreapp2.1
47-
& dotnet test -c Release -f netcoreapp3.1
48-
& dotnet test -c Release -f net50
49-
} else {
50-
& dotnet test -c Release
51-
}
41+
echo "build: Testing project in $test"
5242

53-
if ($LASTEXITCODE -ne 0) { exit 3 }
43+
& dotnet test -c Release
44+
if($LASTEXITCODE -ne 0) { exit 3 }
5445

5546
Pop-Location
5647
}
5748

58-
if ($PSVersionTable.Platform -eq "Unix") {
59-
Push-Location sample/Sample
60-
61-
& dotnet run -f netcoreapp2.1 -c Release --run-once
62-
if ($LASTEXITCODE -ne 0) { exit 4 }
49+
foreach ($test in gci test/*.PerformanceTests) {
50+
Push-Location $test
6351

64-
& dotnet run -f netcoreapp3.1 -c Release --run-once
65-
if ($LASTEXITCODE -ne 0) { exit 4 }
52+
echo "build: Building performance test project in $test"
6653

67-
& dotnet run -f net50 -c Release --run-once
68-
if ($LASTEXITCODE -ne 0) { exit 4 }
54+
& dotnet build -c Release
55+
if($LASTEXITCODE -ne 0) { exit 2 }
6956

7057
Pop-Location
7158
}
7259

73-
Pop-Location
60+
Pop-Location

CHANGES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
3.3.1
4+
5+
* #287 - Fix static member access for concrete type parameters
6+
37
3.3.0
48

59
* #276, #225, #167 - added support for constructors with arguments for complex types

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
</PropertyGroup>
77

88
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">
9-
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" PrivateAssets="all" />
9+
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2" PrivateAssets="all" />
1010
</ItemGroup>
1111
</Project>

README.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,26 @@ var logger = new LoggerConfiguration()
111111
.CreateLogger();
112112
```
113113

114+
Alternatively, you can also pass an array of configuration assemblies:
115+
116+
```csharp
117+
var configurationAssemblies = new[]
118+
{
119+
typeof(ConsoleLoggerConfigurationExtensions).Assembly,
120+
typeof(FileLoggerConfigurationExtensions).Assembly,
121+
};
122+
var logger = new LoggerConfiguration()
123+
.ReadFrom.Configuration(configuration, configurationAssemblies)
124+
.CreateLogger();
125+
```
126+
114127
For legacy .NET Framework projects it also scans default probing path(s).
115128

116129
For all other cases, as well as in the case of non-conventional configuration assembly names **DO** use [Using](#using-section-and-auto-discovery-of-configuration-assemblies) section.
117130

118-
#### .NET 5.0 Single File Applications
131+
#### .NET 5.0 onwards Single File Applications
119132

120-
Currently, auto-discovery of configuration assemblies is not supported in bundled mode. **DO** use [Using](#using-section-and-auto-discovery-of-configuration-assemblies) section for workaround.
133+
Currently, auto-discovery of configuration assemblies is not supported in bundled mode. **DO** use [Using](#using-section-and-auto-discovery-of-configuration-assemblies) section or explicitly pass a collection of configuration assemblies for workaround.
121134

122135
### MinimumLevel, LevelSwitches, overrides and dynamic reload
123136

appveyor.yml

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,37 @@
11
version: '{build}'
2+
23
skip_tags: true
4+
35
image:
4-
- Visual Studio 2019
6+
- Visual Studio 2022
57
- Ubuntu
6-
configuration: Release
8+
79
build_script:
8-
- ps: ./Build.ps1
9-
for:
10-
-
11-
matrix:
12-
only:
13-
- image: Ubuntu
14-
build_script:
15-
- pwsh ./Build.ps1
10+
- pwsh: ./Build.ps1
11+
1612
test: off
13+
1714
artifacts:
1815
- path: artifacts/Serilog.*.nupkg
1916
- path: artifacts/Serilog.*.snupkg
20-
deploy:
21-
- provider: NuGet
22-
api_key:
23-
secure: 6WetFj2k7TEactDaHhg0m0q/WpCldFAUtgAjN8VK9Qn2fsY1vdufRB8XIKnPX9zn
24-
on:
25-
branch: /^(main|dev)$/
26-
- provider: GitHub
27-
auth_token:
28-
secure: p4LpVhBKxGS5WqucHxFQ5c7C8cP74kbNB0Z8k9Oxx/PMaDQ1+ibmoexNqVU5ZlmX
29-
artifacts:
30-
/Serilog.*\.nupkg/
31-
/Serilog.*\.snupkg/
32-
tag: v$(appveyor_build_version)
33-
on:
34-
branch: main
17+
18+
for:
19+
-
20+
matrix:
21+
only:
22+
- image: Visual Studio
23+
deploy:
24+
- provider: NuGet
25+
api_key:
26+
secure: 60gpLnipFCiKLpS7ECI1C6EPJW27KzVwqrBVkEzX6FIMTmsG//HD3p8Oq7WdQPm8
27+
on:
28+
branch: /^(main|dev)$/
29+
- provider: GitHub
30+
auth_token:
31+
secure: p4LpVhBKxGS5WqucHxFQ5c7C8cP74kbNB0Z8k9Oxx/PMaDQ1+ibmoexNqVU5ZlmX
32+
artifacts:
33+
/Serilog.*\.nupkg/
34+
/Serilog.*\.snupkg/
35+
tag: v$(appveyor_build_version)
36+
on:
37+
branch: main

sample/Sample/Program.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
using Serilog.Events;
1313
using Serilog.Debugging;
1414

15+
// ReSharper disable UnusedType.Global
16+
1517
namespace Sample
1618
{
1719
public class Program
@@ -31,7 +33,7 @@ public static void Main(string[] args)
3133
.ReadFrom.Configuration(configuration)
3234
.CreateLogger();
3335

34-
logger.Information("Args: {a}", args);
36+
logger.Information("Args: {Args}", args);
3537

3638
do
3739
{
@@ -79,6 +81,7 @@ public bool IsEnabled(LogEvent logEvent)
7981
public class LoginData
8082
{
8183
public string Username;
84+
// ReSharper disable once NotAccessedField.Global
8285
public string Password;
8386
}
8487

@@ -88,12 +91,12 @@ public bool TryDestructure(object value, ILogEventPropertyValueFactory propertyV
8891
{
8992
result = null;
9093

91-
if (value is LoginData)
94+
if (value is LoginData loginData)
9295
{
9396
result = new StructureValue(
9497
new List<LogEventProperty>
9598
{
96-
new LogEventProperty("Username", new ScalarValue(((LoginData)value).Username))
99+
new("Username", new ScalarValue(loginData.Username))
97100
});
98101
}
99102

sample/Sample/Sample.csproj

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,25 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net50;netcoreapp3.1;netcoreapp2.1;net46</TargetFrameworks>
4+
<TargetFrameworks>net6.0;netcoreapp3.1;net462</TargetFrameworks>
55
<OutputType>Exe</OutputType>
66
</PropertyGroup>
77

8-
<PropertyGroup Condition=" '$(TargetFramework)' == 'net46' ">
8+
<PropertyGroup Condition=" '$(TargetFramework)' == 'net462' ">
99
<PreserveCompilationContext>false</PreserveCompilationContext>
1010
</PropertyGroup>
1111

1212
<ItemGroup>
1313
<ProjectReference Include="..\..\src\Serilog.Settings.Configuration\Serilog.Settings.Configuration.csproj" />
1414
</ItemGroup>
1515

16-
<ItemGroup Condition="'$(TargetFramework)' == 'net46'">
17-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.1" />
18-
<PackageReference Include="Serilog.Filters.Expressions" Version="2.1.0" />
19-
</ItemGroup>
20-
21-
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp2.1'">
22-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.1" />
23-
<PackageReference Include="Serilog.Filters.Expressions" Version="2.1.0" />
24-
</ItemGroup>
25-
26-
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
27-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.10" />
28-
<PackageReference Include="Serilog.Expressions" Version="1.0.0" />
29-
</ItemGroup>
30-
31-
<ItemGroup Condition="'$(TargetFramework)' == 'net50'">
32-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" />
33-
<PackageReference Include="Serilog.Expressions" Version="1.0.0" />
34-
</ItemGroup>
35-
3616
<ItemGroup>
37-
<PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" />
38-
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
39-
<PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />
40-
<PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" />
17+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
18+
<PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
19+
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" />
20+
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
21+
<PackageReference Include="Serilog.Enrichers.Environment" Version="2.2.0" />
22+
<PackageReference Include="Serilog.Expressions" Version="3.3.0" />
4123
<PackageReference Include="Serilog.Formatting.Compact" Version="1.1.0" />
4224
<PackageReference Include="Serilog.Enrichers.Thread" Version="3.1.0" />
4325
</ItemGroup>

serilog-settings-configuration.sln.DotSettings

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -556,4 +556,6 @@ II.2.12 &lt;HandlesEvent /&gt;&#xD;
556556

557557

558558
<s:String x:Key="/Default/FilterSettingsManager/AttributeFilterXml/@EntryValue">&lt;data /&gt;</s:String>
559-
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters /&gt;&lt;/data&gt;</s:String></wpf:ResourceDictionary>
559+
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters /&gt;&lt;/data&gt;</s:String>
560+
<s:Boolean x:Key="/Default/UserDictionary/Words/=Enricher/@EntryIndexedValue">True</s:Boolean>
561+
<s:Boolean x:Key="/Default/UserDictionary/Words/=polyfilled/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

src/Serilog.Settings.Configuration/ConfigurationLoggerConfigurationExtensions.cs

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414

1515
using System;
16+
using System.Reflection;
1617
using Microsoft.Extensions.Configuration;
1718
using Microsoft.Extensions.DependencyModel;
1819
using Serilog.Configuration;
@@ -116,7 +117,7 @@ public static LoggerConfiguration ConfigurationSection(
116117
/// <param name="settingConfiguration">Logger setting configuration.</param>
117118
/// <param name="configuration">A configuration object which contains a Serilog section.</param>
118119
/// <param name="sectionName">A section name for section which contains a Serilog section.</param>
119-
/// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other Types.</param>
120+
/// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other types.</param>
120121
/// <returns>An object allowing configuration to continue.</returns>
121122
public static LoggerConfiguration Configuration(
122123
this LoggerSettingsConfiguration settingConfiguration,
@@ -140,7 +141,7 @@ public static LoggerConfiguration Configuration(
140141
/// </summary>
141142
/// <param name="settingConfiguration">Logger setting configuration.</param>
142143
/// <param name="configuration">A configuration object which contains a Serilog section.</param>
143-
/// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other Types.</param>
144+
/// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other types.</param>
144145
/// <returns>An object allowing configuration to continue.</returns>
145146
public static LoggerConfiguration Configuration(
146147
this LoggerSettingsConfiguration settingConfiguration,
@@ -154,7 +155,7 @@ public static LoggerConfiguration Configuration(
154155
/// </summary>
155156
/// <param name="settingConfiguration">Logger setting configuration.</param>
156157
/// <param name="configSection">The Serilog configuration section</param>
157-
/// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other Types.</param>
158+
/// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other types.</param>
158159
/// <returns>An object allowing configuration to continue.</returns>
159160
[Obsolete("Use ReadFrom.Configuration(IConfiguration configuration, string sectionName, ConfigurationAssemblySource configurationAssemblySource) instead.")]
160161
public static LoggerConfiguration ConfigurationSection(
@@ -169,5 +170,39 @@ public static LoggerConfiguration ConfigurationSection(
169170

170171
return settingConfiguration.Settings(new ConfigurationReader(configSection, assemblyFinder, configuration: null));
171172
}
173+
174+
/// <summary>
175+
/// Reads logger settings from the provided configuration object using the provided section name.
176+
/// </summary>
177+
/// <param name="settingConfiguration">Logger setting configuration.</param>
178+
/// <param name="configuration">A configuration object which contains a Serilog section.</param>
179+
/// <param name="sectionName">A section name for section which contains a Serilog section.</param>
180+
/// <param name="assemblies">A collection of assemblies that contains sinks and other types.</param>
181+
/// <returns>An object allowing configuration to continue.</returns>
182+
public static LoggerConfiguration Configuration(
183+
this LoggerSettingsConfiguration settingConfiguration,
184+
IConfiguration configuration,
185+
string sectionName,
186+
params Assembly[] assemblies)
187+
{
188+
if (settingConfiguration == null) throw new ArgumentNullException(nameof(settingConfiguration));
189+
if (configuration == null) throw new ArgumentNullException(nameof(configuration));
190+
if (sectionName == null) throw new ArgumentNullException(nameof(sectionName));
191+
192+
return settingConfiguration.Settings(new ConfigurationReader(configuration.GetSection(sectionName), assemblies, new ResolutionContext(configuration)));
193+
}
194+
195+
/// <summary>
196+
/// Reads logger settings from the provided configuration object using the default section name.
197+
/// </summary>
198+
/// <param name="settingConfiguration">Logger setting configuration.</param>
199+
/// <param name="configuration">A configuration object which contains a Serilog section.</param>
200+
/// <param name="assemblies">A collection of assemblies that contains sinks and other types.</param>
201+
/// <returns>An object allowing configuration to continue.</returns>
202+
public static LoggerConfiguration Configuration(
203+
this LoggerSettingsConfiguration settingConfiguration,
204+
IConfiguration configuration,
205+
params Assembly[] assemblies)
206+
=> Configuration(settingConfiguration, configuration, DefaultSectionName, assemblies);
172207
}
173208
}

0 commit comments

Comments
 (0)