Skip to content

1.0.1 Release #12

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
May 18, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ foreach ($src in ls src/*) {

echo "build: Packaging project in $src"

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

Pop-Location
Expand Down
4 changes: 2 additions & 2 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ image: Visual Studio 2015
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: Invoke-WebRequest "https://raw.githubusercontent.com/dotnet/cli/rel/1.0.0/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: '& .\build\installcli.ps1 -InstallDir "$env:DOTNET_INSTALL_DIR" -NoPath -Version 1.0.1'
- ps: $env:Path = "$env:DOTNET_INSTALL_DIR;$env:Path"
build_script:
- ps: ./Build.ps1
Expand Down
25 changes: 25 additions & 0 deletions example/RoundTrip/RoundTrip.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp1.0</TargetFramework>
<AssemblyName>RoundTrip</AssemblyName>
<OutputType>Exe</OutputType>
<PackageId>RoundTrip</PackageId>
<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
<PackageTargetFallback>$(PackageTargetFallback);dnxcore50</PackageTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\Serilog.Formatting.Compact.Reader\Serilog.Formatting.Compact.Reader.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Serilog.Sinks.File" Version="3.1.0" />
<PackageReference Include="Serilog.Sinks.Literate" Version="2.0.0" />
<PackageReference Include="Serilog.Formatting.Compact" Version="1.0.0" />
</ItemGroup>

</Project>
21 changes: 0 additions & 21 deletions example/RoundTrip/RoundTrip.xproj

This file was deleted.

23 changes: 0 additions & 23 deletions example/RoundTrip/project.json

This file was deleted.

6 changes: 0 additions & 6 deletions global.json

This file was deleted.

15 changes: 9 additions & 6 deletions serilog-formatting-compact-reader.sln
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
# Visual Studio 15
VisualStudioVersion = 15.0.26430.6
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E673DF37-5F53-48F6-9991-D762B8E35548}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "global", "global", "{70BA4A7D-8A1E-4EAC-AA28-8FD2BD1556BD}"
ProjectSection(SolutionItems) = preProject
global.json = global.json
appveyor.yml = appveyor.yml
Build.ps1 = Build.ps1
LICENSE = LICENSE
README.md = README.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "asset", "asset", "{71DD3779-3435-42D0-BA02-AEA04EE5B1E5}"
Expand All @@ -19,11 +22,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "example", "example", "{C352
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{C76B8054-0892-42DA-83D5-88D731782FE8}"
EndProject
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}"
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}"
EndProject
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "RoundTrip", "example\RoundTrip\RoundTrip.xproj", "{961D5124-BBB2-4022-945E-1190BF6BE0C9}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RoundTrip", "example\RoundTrip\RoundTrip.csproj", "{961D5124-BBB2-4022-945E-1190BF6BE0C9}"
EndProject
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}"
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}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down
34 changes: 11 additions & 23 deletions src/Serilog.Formatting.Compact.Reader/LogEventReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ namespace Serilog.Formatting.Compact.Reader
/// </summary>
public class LogEventReader : IDisposable
{
static readonly MessageTemplateParser _parser = new MessageTemplateParser();
static readonly MessageTemplateParser Parser = new MessageTemplateParser();
readonly TextReader _text;
readonly JsonSerializer _serializer;

int _lineNumber = 0;
int _lineNumber;

/// <summary>
/// Construct a <see cref="LogEventReader"/>.
Expand All @@ -42,9 +42,7 @@ public class LogEventReader : IDisposable
/// <param name="serializer">If specified, a JSON serializer used when converting event documents.</param>
public LogEventReader(TextReader text, JsonSerializer serializer = null)
{
if (text == null) throw new ArgumentNullException(nameof(text));

_text = text;
_text = text ?? throw new ArgumentNullException(nameof(text));
_serializer = serializer ?? CreateSerializer();
}

Expand Down Expand Up @@ -126,26 +124,25 @@ static LogEvent ReadFromJObject(int lineNumber, JObject jObject)
}

var level = LogEventLevel.Information;
string l;
if (TryGetOptionalField(lineNumber, jObject, ClefFields.Level, out l))
if (TryGetOptionalField(lineNumber, jObject, ClefFields.Level, out string l))
level = (LogEventLevel)Enum.Parse(typeof(LogEventLevel), l);
Exception exception = null;
string ex;
if (TryGetOptionalField(lineNumber, jObject, ClefFields.Exception, out ex))
if (TryGetOptionalField(lineNumber, jObject, ClefFields.Exception, out string ex))
exception = new TextException(ex);

var unrecognized = jObject.Properties().Where(p => ClefFields.IsUnrecognized(p.Name));
// ReSharper disable once PossibleMultipleEnumeration
if (unrecognized.Any())
{
// ReSharper disable once PossibleMultipleEnumeration
var names = string.Join(", ", unrecognized.Select(p => $"`{p.Name}`"));
throw new InvalidDataException($"{names} on line {lineNumber} are unrecognized.");
}

var parsedTemplate = _parser.Parse(messageTemplate);
var parsedTemplate = Parser.Parse(messageTemplate);
var renderings = Enumerable.Empty<Rendering>();

JToken r;
if (jObject.TryGetValue(ClefFields.Renderings, out r))
if (jObject.TryGetValue(ClefFields.Renderings, out JToken r))
{
var renderedByIndex = r as JArray;
if (renderedByIndex == null)
Expand Down Expand Up @@ -178,15 +175,6 @@ static LogEvent ReadFromJObject(int lineNumber, JObject jObject)
return new LogEvent(timestamp, level, exception, parsedTemplate, properties);
}

static string GetRequiredField(int lineNumber, JObject data, string field)
{
string value;
if (!TryGetOptionalField(lineNumber, data, field, out value))
throw new InvalidDataException($"The data on line {lineNumber} does not include the required `{field}` field.");

return value;
}

static bool TryGetOptionalField(int lineNumber, JObject data, string field, out string value)
{
JToken token;
Expand Down Expand Up @@ -214,8 +202,8 @@ static DateTimeOffset GetRequiredTimestampField(int lineNumber, JObject data, st
var dt = token.Value<JValue>().Value;
if (dt is DateTimeOffset)
return (DateTimeOffset)dt;
else
return (DateTime)dt;

return (DateTime)dt;
}

if (token.Type != JTokenType.String)
Expand Down
15 changes: 0 additions & 15 deletions src/Serilog.Formatting.Compact.Reader/Properties/AssemblyInfo.cs

This file was deleted.

19 changes: 7 additions & 12 deletions src/Serilog.Formatting.Compact.Reader/PropertyFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@

using Newtonsoft.Json.Linq;
using Serilog.Events;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Serilog.Formatting.Compact.Reader
{
static class PropertyFactory
{
const string TypeTagPropertyName = "$type";

public static LogEventProperty CreateProperty(string name, JToken value, IEnumerable<Rendering> renderings)
{
return new LogEventProperty(name, CreatePropertyValue(value, renderings));
Expand All @@ -33,28 +33,23 @@ static LogEventPropertyValue CreatePropertyValue(JToken value, IEnumerable<Rende
if (value.Type == JTokenType.Null)
return new ScalarValue(null);

var obj = value as JObject;
if (obj != null)
if (value is JObject obj)
{
JToken tt;
obj.TryGetValue("$typeTag", out tt);
obj.TryGetValue(TypeTagPropertyName, out tt);
return new StructureValue(
obj.Properties().Where(kvp => kvp.Name != "$typeTag").Select(kvp => CreateProperty(kvp.Name, kvp.Value, null)),
obj.Properties().Where(kvp => kvp.Name != TypeTagPropertyName).Select(kvp => CreateProperty(kvp.Name, kvp.Value, null)),
tt?.Value<string>());
}

var arr = value as JArray;
if (arr != null)
if (value is JArray arr)
{
return new SequenceValue(arr.Select(v => CreatePropertyValue(v, null)));
}

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

if (renderings != null)
return new RenderableScalarValue(raw, renderings);

return new ScalarValue(raw);
return renderings != null ? new RenderableScalarValue(raw, renderings) : new ScalarValue(raw);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<VersionPrefix>1.0.1</VersionPrefix>
<TargetFrameworks>netstandard1.0;net45</TargetFrameworks>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<AssemblyName>Serilog.Formatting.Compact.Reader</AssemblyName>
<AssemblyOriginatorKeyFile>../../asset/Serilog.snk</AssemblyOriginatorKeyFile>
<SignAssembly>true</SignAssembly>
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
<PackageId>Serilog.Formatting.Compact.Reader</PackageId>
<PackageTags>serilog;json</PackageTags>
<PackageIconUrl>http://serilog.net/images/serilog-extension-nuget.png</PackageIconUrl>
<PackageProjectUrl>https://git.1-hub.cnserilog/serilog-formatting-compact-reader</PackageProjectUrl>
<PackageLicenseUrl>http://www.apache.org/licenses/LICENSE-2.0</PackageLicenseUrl>
<NetStandardImplicitPackageVersion Condition=" '$(TargetFramework)' == 'netstandard1.0' ">1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
<PackageReference Include="Serilog" Version="2.3.0" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'net45' ">
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
</ItemGroup>

<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>

</Project>

This file was deleted.

30 changes: 0 additions & 30 deletions src/Serilog.Formatting.Compact.Reader/project.json

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,15 @@ public void HandlesDefaultJsonNetSerialization()

Assert.Equal(DateTimeOffset.Parse("2016-10-12T04:20:58.0554314Z"), evt.Timestamp);
}

[Fact]
public void RoundTripsTypeTags()
{
const string document = "{\"@t\":\"2016-10-12T04:20:58.0554314Z\",\"@m\":\"Hello\",\"User\":{\"$type\":\"TestUser\",\"Name\":\"nblumhardt\"}}";
var evt = LogEventReader.ReadFromString(document);

var user = (StructureValue)evt.Properties["User"];
Assert.Equal("TestUser", user.TypeTag);
}
}
}
Loading