Skip to content

Commit e14d1bd

Browse files
authored
Merge pull request #27 from serilog/dev
1.0.4 Release
2 parents b2003ef + 598d33b commit e14d1bd

File tree

11 files changed

+72
-22
lines changed

11 files changed

+72
-22
lines changed

appveyor.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
version: '{build}'
22
skip_tags: true
3-
image: Visual Studio 2017
3+
image: Visual Studio 2019
44
configuration: Release
55
install:
66
- ps: mkdir -Force ".\build\" | Out-Null
@@ -19,7 +19,7 @@ only_commits:
1919
deploy:
2020
- provider: NuGet
2121
api_key:
22-
secure: bd9z4P73oltOXudAjPehwp9iDKsPtC+HbgshOrSgoyQKr5xVK+bxJQngrDJkHdY8
22+
secure: GvzC+u5V9MCsCq/tMKxGvzhxRxxRk0RDHpKOjySL+WoJgIKnrjoqZRgdjEFrY3SC
2323
skip_symbols: true
2424
on:
2525
branch: /^(master|dev)$/

asset/icon.png

19.9 KB
Loading

example/RoundTrip/RoundTrip.csproj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp1.0</TargetFramework>
4+
<TargetFramework>netcoreapp3.1</TargetFramework>
55
<AssemblyName>RoundTrip</AssemblyName>
66
<OutputType>Exe</OutputType>
77
<PackageId>RoundTrip</PackageId>
8-
<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
9-
<PackageTargetFallback>$(PackageTargetFallback);dnxcore50</PackageTargetFallback>
108
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
119
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
1210
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>

global.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"sdk": {
3+
"version": "5.0.102"
4+
}
5+
}

serilog-formatting-compact-reader.sln

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 15
4-
VisualStudioVersion = 15.0.26430.6
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.30523.141
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E673DF37-5F53-48F6-9991-D762B8E35548}"
77
EndProject
@@ -11,6 +11,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "global", "global", "{70BA4A
1111
Build.ps1 = Build.ps1
1212
LICENSE = LICENSE
1313
README.md = README.md
14+
.gitattributes = .gitattributes
15+
.gitignore = .gitignore
16+
global.json = global.json
1417
EndProjectSection
1518
EndProject
1619
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "asset", "asset", "{71DD3779-3435-42D0-BA02-AEA04EE5B1E5}"
@@ -55,4 +58,7 @@ Global
5558
{961D5124-BBB2-4022-945E-1190BF6BE0C9} = {C3520C42-AC85-401C-B496-F51C816B784F}
5659
{3C2D8E01-5580-426A-BDD9-EC59CD98E618} = {C76B8054-0892-42DA-83D5-88D731782FE8}
5760
EndGlobalSection
61+
GlobalSection(ExtensibilityGlobals) = postSolution
62+
SolutionGuid = {C0F6B3C6-5950-483C-8391-A2BFAD958790}
63+
EndGlobalSection
5864
EndGlobal

src/Serilog.Formatting.Compact.Reader/LogEventReader.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ namespace Serilog.Formatting.Compact.Reader
3030
public class LogEventReader : IDisposable
3131
{
3232
static readonly MessageTemplateParser Parser = new MessageTemplateParser();
33+
static readonly Rendering[] NoRenderings = new Rendering[0];
3334
readonly TextReader _text;
3435
readonly JsonSerializer _serializer;
3536

@@ -132,7 +133,7 @@ static LogEvent ReadFromJObject(int lineNumber, JObject jObject)
132133
new MessageTemplate(Enumerable.Empty<MessageTemplateToken>()) :
133134
Parser.Parse(messageTemplate);
134135

135-
var renderings = Enumerable.Empty<Rendering>();
136+
var renderings = NoRenderings;
136137

137138
if (jObject.TryGetValue(ClefFields.Renderings, out JToken r))
138139
{
@@ -153,13 +154,13 @@ static LogEvent ReadFromJObject(int lineNumber, JObject jObject)
153154
.Select(f =>
154155
{
155156
var name = ClefFields.Unescape(f.Name);
156-
var renderingsByFormat = renderings.Where(rd => rd.Name == name);
157+
var renderingsByFormat = renderings.Length != 0 ? renderings.Where(rd => rd.Name == name).ToArray() : NoRenderings;
157158
return PropertyFactory.CreateProperty(name, f.Value, renderingsByFormat);
158159
})
159160
.ToList();
160161

161-
string eventId;
162-
if (TryGetOptionalField(lineNumber, jObject, ClefFields.EventId, out eventId)) // TODO; should support numeric ids.
162+
// TODO: this should attempt to support numeric ids.
163+
if (TryGetOptionalField(lineNumber, jObject, ClefFields.EventId, out var eventId))
163164
{
164165
properties.Add(new LogEventProperty("@i", new ScalarValue(eventId)));
165166
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
using System.Runtime.CompilerServices;
2+
3+
[assembly: InternalsVisibleTo("Serilog.Formatting.Compact.Reader.Tests, PublicKey=" +
4+
"0024000004800000940000000602000000240000525341310004000001000100fb8d13fd344a1c" +
5+
"6fe0fe83ef33c1080bf30690765bc6eb0df26ebfdf8f21670c64265b30db09f73a0dea5b3db4c9" +
6+
"d18dbf6d5a25af5ce9016f281014d79dc3b4201ac646c451830fc7e61a2dfd633d34c39f87b818" +
7+
"94191652df5ac63cc40c77f3542f702bda692e6e8a9158353df189007a49da0f3cfd55eb250066" +
8+
"b19485ec")]

src/Serilog.Formatting.Compact.Reader/PropertyFactory.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,25 @@ namespace Serilog.Formatting.Compact.Reader
2222
static class PropertyFactory
2323
{
2424
const string TypeTagPropertyName = "$type";
25+
const string InvalidPropertyNameSubstitute = "(unnamed)";
2526

26-
public static LogEventProperty CreateProperty(string name, JToken value, IEnumerable<Rendering> renderings)
27+
public static LogEventProperty CreateProperty(string name, JToken value, Rendering[] renderings)
2728
{
29+
// The format allows (does not disallow) empty/null property names, but Serilog cannot represent them.
30+
if (!LogEventProperty.IsValidName(name))
31+
name = InvalidPropertyNameSubstitute;
32+
2833
return new LogEventProperty(name, CreatePropertyValue(value, renderings));
2934
}
3035

31-
static LogEventPropertyValue CreatePropertyValue(JToken value, IEnumerable<Rendering> renderings)
36+
static LogEventPropertyValue CreatePropertyValue(JToken value, Rendering[] renderings)
3237
{
3338
if (value.Type == JTokenType.Null)
3439
return new ScalarValue(null);
3540

3641
if (value is JObject obj)
3742
{
38-
JToken tt;
39-
obj.TryGetValue(TypeTagPropertyName, out tt);
43+
obj.TryGetValue(TypeTagPropertyName, out var tt);
4044
return new StructureValue(
4145
obj.Properties().Where(kvp => kvp.Name != TypeTagPropertyName).Select(kvp => CreateProperty(kvp.Name, kvp.Value, null)),
4246
tt?.Value<string>());
@@ -49,7 +53,7 @@ static LogEventPropertyValue CreatePropertyValue(JToken value, IEnumerable<Rende
4953

5054
var raw = value.Value<JValue>().Value;
5155

52-
return renderings != null && renderings.Any() ?
56+
return renderings != null && renderings.Length != 0 ?
5357
new RenderableScalarValue(raw, renderings) :
5458
new ScalarValue(raw);
5559
}

src/Serilog.Formatting.Compact.Reader/Serilog.Formatting.Compact.Reader.csproj

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

33
<PropertyGroup>
4-
<VersionPrefix>1.0.3</VersionPrefix>
5-
<TargetFrameworks>netstandard1.0;net45</TargetFrameworks>
4+
<VersionPrefix>1.0.4</VersionPrefix>
5+
<TargetFrameworks>netstandard2.1;netstandard2.0;netstandard1.0;net45</TargetFrameworks>
66
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
77
<GenerateDocumentationFile>true</GenerateDocumentationFile>
88
<AssemblyName>Serilog.Formatting.Compact.Reader</AssemblyName>
@@ -11,9 +11,9 @@
1111
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
1212
<PackageId>Serilog.Formatting.Compact.Reader</PackageId>
1313
<PackageTags>serilog;json</PackageTags>
14-
<PackageIconUrl>http://serilog.net/images/serilog-extension-nuget.png</PackageIconUrl>
14+
<PackageIcon>icon.png</PackageIcon>
15+
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
1516
<PackageProjectUrl>https://github.com/serilog/serilog-formatting-compact-reader</PackageProjectUrl>
16-
<PackageLicenseUrl>http://www.apache.org/licenses/LICENSE-2.0</PackageLicenseUrl>
1717
<RepositoryUrl>https://github.com/serilog/serilog-formatting-compact-reader</RepositoryUrl>
1818
<RepositoryType>git</RepositoryType>
1919
</PropertyGroup>
@@ -29,7 +29,7 @@
2929
</ItemGroup>
3030

3131
<ItemGroup>
32-
<Folder Include="Properties\" />
32+
<None Include="..\..\asset\icon.png" Pack="true" Visible="false" PackagePath="" />
3333
</ItemGroup>
3434

3535
</Project>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using Newtonsoft.Json.Linq;
2+
using Serilog.Events;
3+
using Xunit;
4+
5+
namespace Serilog.Formatting.Compact.Reader.Tests
6+
{
7+
public class PropertyFactoryTests
8+
{
9+
[Fact]
10+
public void PropertiesAreConstructed()
11+
{
12+
const string name = "Test";
13+
const string value = "Value";
14+
var p = PropertyFactory.CreateProperty(name, new JValue(value), null);
15+
Assert.Equal(p.Name, name);
16+
var s = Assert.IsType<ScalarValue>(p.Value);
17+
Assert.Equal(value, s.Value);
18+
}
19+
20+
[Fact]
21+
public void InvalidPropertyNamesAreSubstituted()
22+
{
23+
const string name = "";
24+
var p = PropertyFactory.CreateProperty(name, new JValue((object)null), null);
25+
Assert.NotEqual(p.Name, name);
26+
}
27+
}
28+
}

test/Serilog.Formatting.Compact.Reader.Tests/Serilog.Formatting.Compact.Reader.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks>
4+
<TargetFrameworks>net462;net5.0</TargetFrameworks>
55
<AssemblyName>Serilog.Formatting.Compact.Reader.Tests</AssemblyName>
66
<AssemblyOriginatorKeyFile>../../asset/Serilog.snk</AssemblyOriginatorKeyFile>
77
<SignAssembly>true</SignAssembly>

0 commit comments

Comments
 (0)