Skip to content

Commit 1f3a68f

Browse files
authored
Merge pull request #12 from serilog/dev
1.0.1 Release
2 parents 33338c7 + e0bb296 commit 1f3a68f

17 files changed

+136
-204
lines changed

Build.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ foreach ($src in ls src/*) {
2020

2121
echo "build: Packaging project in $src"
2222

23-
& dotnet pack -c Release -o ..\..\artifacts --version-suffix=$suffix
23+
& dotnet pack -c Release -o ..\..\artifacts --version-suffix=$suffix --include-source
2424
if($LASTEXITCODE -ne 0) { exit 1 }
2525

2626
Pop-Location

appveyor.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ image: Visual Studio 2015
44
configuration: Release
55
install:
66
- ps: mkdir -Force ".\build\" | Out-Null
7-
- ps: Invoke-WebRequest "https://raw.githubusercontent.com/dotnet/cli/rel/1.0.0-preview2/scripts/obtain/dotnet-install.ps1" -OutFile ".\build\installcli.ps1"
7+
- ps: Invoke-WebRequest "https://raw.githubusercontent.com/dotnet/cli/rel/1.0.0/scripts/obtain/dotnet-install.ps1" -OutFile ".\build\installcli.ps1"
88
- ps: $env:DOTNET_INSTALL_DIR = "$pwd\.dotnetcli"
9-
- ps: '& .\build\installcli.ps1 -InstallDir "$env:DOTNET_INSTALL_DIR" -NoPath -Version 1.0.0-preview2-003121'
9+
- ps: '& .\build\installcli.ps1 -InstallDir "$env:DOTNET_INSTALL_DIR" -NoPath -Version 1.0.1'
1010
- ps: $env:Path = "$env:DOTNET_INSTALL_DIR;$env:Path"
1111
build_script:
1212
- ps: ./Build.ps1

example/RoundTrip/RoundTrip.csproj

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp1.0</TargetFramework>
5+
<AssemblyName>RoundTrip</AssemblyName>
6+
<OutputType>Exe</OutputType>
7+
<PackageId>RoundTrip</PackageId>
8+
<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
9+
<PackageTargetFallback>$(PackageTargetFallback);dnxcore50</PackageTargetFallback>
10+
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
11+
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
12+
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
13+
</PropertyGroup>
14+
15+
<ItemGroup>
16+
<ProjectReference Include="..\..\src\Serilog.Formatting.Compact.Reader\Serilog.Formatting.Compact.Reader.csproj" />
17+
</ItemGroup>
18+
19+
<ItemGroup>
20+
<PackageReference Include="Serilog.Sinks.File" Version="3.1.0" />
21+
<PackageReference Include="Serilog.Sinks.Literate" Version="2.0.0" />
22+
<PackageReference Include="Serilog.Formatting.Compact" Version="1.0.0" />
23+
</ItemGroup>
24+
25+
</Project>

example/RoundTrip/RoundTrip.xproj

Lines changed: 0 additions & 21 deletions
This file was deleted.

example/RoundTrip/project.json

Lines changed: 0 additions & 23 deletions
This file was deleted.

global.json

Lines changed: 0 additions & 6 deletions
This file was deleted.

serilog-formatting-compact-reader.sln

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 14
4-
VisualStudioVersion = 14.0.25420.1
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.26430.6
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E673DF37-5F53-48F6-9991-D762B8E35548}"
77
EndProject
88
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "global", "global", "{70BA4A7D-8A1E-4EAC-AA28-8FD2BD1556BD}"
99
ProjectSection(SolutionItems) = preProject
10-
global.json = global.json
10+
appveyor.yml = appveyor.yml
11+
Build.ps1 = Build.ps1
12+
LICENSE = LICENSE
13+
README.md = README.md
1114
EndProjectSection
1215
EndProject
1316
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "asset", "asset", "{71DD3779-3435-42D0-BA02-AEA04EE5B1E5}"
@@ -19,11 +22,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "example", "example", "{C352
1922
EndProject
2023
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{C76B8054-0892-42DA-83D5-88D731782FE8}"
2124
EndProject
22-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Serilog.Formatting.Compact.Reader", "src\Serilog.Formatting.Compact.Reader\Serilog.Formatting.Compact.Reader.xproj", "{D6A02FA9-860A-48AC-8288-8CEBC962D4DE}"
25+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Serilog.Formatting.Compact.Reader", "src\Serilog.Formatting.Compact.Reader\Serilog.Formatting.Compact.Reader.csproj", "{D6A02FA9-860A-48AC-8288-8CEBC962D4DE}"
2326
EndProject
24-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RoundTrip", "example\RoundTrip\RoundTrip.xproj", "{961D5124-BBB2-4022-945E-1190BF6BE0C9}"
27+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RoundTrip", "example\RoundTrip\RoundTrip.csproj", "{961D5124-BBB2-4022-945E-1190BF6BE0C9}"
2528
EndProject
26-
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Serilog.Formatting.Compact.Reader.Tests", "test\Serilog.Formatting.Compact.Reader.Tests\Serilog.Formatting.Compact.Reader.Tests.xproj", "{3C2D8E01-5580-426A-BDD9-EC59CD98E618}"
29+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Serilog.Formatting.Compact.Reader.Tests", "test\Serilog.Formatting.Compact.Reader.Tests\Serilog.Formatting.Compact.Reader.Tests.csproj", "{3C2D8E01-5580-426A-BDD9-EC59CD98E618}"
2730
EndProject
2831
Global
2932
GlobalSection(SolutionConfigurationPlatforms) = preSolution

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

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ namespace Serilog.Formatting.Compact.Reader
2929
/// </summary>
3030
public class LogEventReader : IDisposable
3131
{
32-
static readonly MessageTemplateParser _parser = new MessageTemplateParser();
32+
static readonly MessageTemplateParser Parser = new MessageTemplateParser();
3333
readonly TextReader _text;
3434
readonly JsonSerializer _serializer;
3535

36-
int _lineNumber = 0;
36+
int _lineNumber;
3737

3838
/// <summary>
3939
/// Construct a <see cref="LogEventReader"/>.
@@ -42,9 +42,7 @@ public class LogEventReader : IDisposable
4242
/// <param name="serializer">If specified, a JSON serializer used when converting event documents.</param>
4343
public LogEventReader(TextReader text, JsonSerializer serializer = null)
4444
{
45-
if (text == null) throw new ArgumentNullException(nameof(text));
46-
47-
_text = text;
45+
_text = text ?? throw new ArgumentNullException(nameof(text));
4846
_serializer = serializer ?? CreateSerializer();
4947
}
5048

@@ -126,26 +124,25 @@ static LogEvent ReadFromJObject(int lineNumber, JObject jObject)
126124
}
127125

128126
var level = LogEventLevel.Information;
129-
string l;
130-
if (TryGetOptionalField(lineNumber, jObject, ClefFields.Level, out l))
127+
if (TryGetOptionalField(lineNumber, jObject, ClefFields.Level, out string l))
131128
level = (LogEventLevel)Enum.Parse(typeof(LogEventLevel), l);
132129
Exception exception = null;
133-
string ex;
134-
if (TryGetOptionalField(lineNumber, jObject, ClefFields.Exception, out ex))
130+
if (TryGetOptionalField(lineNumber, jObject, ClefFields.Exception, out string ex))
135131
exception = new TextException(ex);
136132

137133
var unrecognized = jObject.Properties().Where(p => ClefFields.IsUnrecognized(p.Name));
134+
// ReSharper disable once PossibleMultipleEnumeration
138135
if (unrecognized.Any())
139136
{
137+
// ReSharper disable once PossibleMultipleEnumeration
140138
var names = string.Join(", ", unrecognized.Select(p => $"`{p.Name}`"));
141139
throw new InvalidDataException($"{names} on line {lineNumber} are unrecognized.");
142140
}
143141

144-
var parsedTemplate = _parser.Parse(messageTemplate);
142+
var parsedTemplate = Parser.Parse(messageTemplate);
145143
var renderings = Enumerable.Empty<Rendering>();
146144

147-
JToken r;
148-
if (jObject.TryGetValue(ClefFields.Renderings, out r))
145+
if (jObject.TryGetValue(ClefFields.Renderings, out JToken r))
149146
{
150147
var renderedByIndex = r as JArray;
151148
if (renderedByIndex == null)
@@ -178,15 +175,6 @@ static LogEvent ReadFromJObject(int lineNumber, JObject jObject)
178175
return new LogEvent(timestamp, level, exception, parsedTemplate, properties);
179176
}
180177

181-
static string GetRequiredField(int lineNumber, JObject data, string field)
182-
{
183-
string value;
184-
if (!TryGetOptionalField(lineNumber, data, field, out value))
185-
throw new InvalidDataException($"The data on line {lineNumber} does not include the required `{field}` field.");
186-
187-
return value;
188-
}
189-
190178
static bool TryGetOptionalField(int lineNumber, JObject data, string field, out string value)
191179
{
192180
JToken token;
@@ -214,8 +202,8 @@ static DateTimeOffset GetRequiredTimestampField(int lineNumber, JObject data, st
214202
var dt = token.Value<JValue>().Value;
215203
if (dt is DateTimeOffset)
216204
return (DateTimeOffset)dt;
217-
else
218-
return (DateTime)dt;
205+
206+
return (DateTime)dt;
219207
}
220208

221209
if (token.Type != JTokenType.String)

src/Serilog.Formatting.Compact.Reader/Properties/AssemblyInfo.cs

Lines changed: 0 additions & 15 deletions
This file was deleted.

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

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@
1414

1515
using Newtonsoft.Json.Linq;
1616
using Serilog.Events;
17-
using System;
1817
using System.Collections.Generic;
1918
using System.Linq;
20-
using System.Threading.Tasks;
2119

2220
namespace Serilog.Formatting.Compact.Reader
2321
{
2422
static class PropertyFactory
2523
{
24+
const string TypeTagPropertyName = "$type";
25+
2626
public static LogEventProperty CreateProperty(string name, JToken value, IEnumerable<Rendering> renderings)
2727
{
2828
return new LogEventProperty(name, CreatePropertyValue(value, renderings));
@@ -33,28 +33,23 @@ static LogEventPropertyValue CreatePropertyValue(JToken value, IEnumerable<Rende
3333
if (value.Type == JTokenType.Null)
3434
return new ScalarValue(null);
3535

36-
var obj = value as JObject;
37-
if (obj != null)
36+
if (value is JObject obj)
3837
{
3938
JToken tt;
40-
obj.TryGetValue("$typeTag", out tt);
39+
obj.TryGetValue(TypeTagPropertyName, out tt);
4140
return new StructureValue(
42-
obj.Properties().Where(kvp => kvp.Name != "$typeTag").Select(kvp => CreateProperty(kvp.Name, kvp.Value, null)),
41+
obj.Properties().Where(kvp => kvp.Name != TypeTagPropertyName).Select(kvp => CreateProperty(kvp.Name, kvp.Value, null)),
4342
tt?.Value<string>());
4443
}
4544

46-
var arr = value as JArray;
47-
if (arr != null)
45+
if (value is JArray arr)
4846
{
4947
return new SequenceValue(arr.Select(v => CreatePropertyValue(v, null)));
5048
}
5149

5250
var raw = value.Value<JValue>().Value;
5351

54-
if (renderings != null)
55-
return new RenderableScalarValue(raw, renderings);
56-
57-
return new ScalarValue(raw);
52+
return renderings != null ? new RenderableScalarValue(raw, renderings) : new ScalarValue(raw);
5853
}
5954
}
6055
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<VersionPrefix>1.0.1</VersionPrefix>
5+
<TargetFrameworks>netstandard1.0;net45</TargetFrameworks>
6+
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
7+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
8+
<AssemblyName>Serilog.Formatting.Compact.Reader</AssemblyName>
9+
<AssemblyOriginatorKeyFile>../../asset/Serilog.snk</AssemblyOriginatorKeyFile>
10+
<SignAssembly>true</SignAssembly>
11+
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
12+
<PackageId>Serilog.Formatting.Compact.Reader</PackageId>
13+
<PackageTags>serilog;json</PackageTags>
14+
<PackageIconUrl>http://serilog.net/images/serilog-extension-nuget.png</PackageIconUrl>
15+
<PackageProjectUrl>https://github.com/serilog/serilog-formatting-compact-reader</PackageProjectUrl>
16+
<PackageLicenseUrl>http://www.apache.org/licenses/LICENSE-2.0</PackageLicenseUrl>
17+
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netstandard1.0' ">1.6.0</NetStandardImplicitPackageVersion>
18+
</PropertyGroup>
19+
20+
<ItemGroup>
21+
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
22+
<PackageReference Include="Serilog" Version="2.3.0" />
23+
</ItemGroup>
24+
25+
<ItemGroup Condition=" '$(TargetFramework)' == 'net45' ">
26+
<Reference Include="System" />
27+
<Reference Include="Microsoft.CSharp" />
28+
</ItemGroup>
29+
30+
<ItemGroup>
31+
<Folder Include="Properties\" />
32+
</ItemGroup>
33+
34+
</Project>

src/Serilog.Formatting.Compact.Reader/Serilog.Formatting.Compact.Reader.xproj

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/Serilog.Formatting.Compact.Reader/project.json

Lines changed: 0 additions & 30 deletions
This file was deleted.

test/Serilog.Formatting.Compact.Reader.Tests/LogEventReaderTests.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,15 @@ public void HandlesDefaultJsonNetSerialization()
6161

6262
Assert.Equal(DateTimeOffset.Parse("2016-10-12T04:20:58.0554314Z"), evt.Timestamp);
6363
}
64+
65+
[Fact]
66+
public void RoundTripsTypeTags()
67+
{
68+
const string document = "{\"@t\":\"2016-10-12T04:20:58.0554314Z\",\"@m\":\"Hello\",\"User\":{\"$type\":\"TestUser\",\"Name\":\"nblumhardt\"}}";
69+
var evt = LogEventReader.ReadFromString(document);
70+
71+
var user = (StructureValue)evt.Properties["User"];
72+
Assert.Equal("TestUser", user.TypeTag);
73+
}
6474
}
6575
}

0 commit comments

Comments
 (0)