Skip to content

Commit a3c487c

Browse files
authored
Merge pull request #293 from nblumhardt/2023.4-final
2023.4 final
2 parents 00bf1e7 + a7b2c1e commit a3c487c

File tree

9 files changed

+78
-29
lines changed

9 files changed

+78
-29
lines changed

appveyor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version: 2023.3.{build}
1+
version: 2023.4.{build}
22
skip_tags: true
33
image:
44
- Visual Studio 2022

global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"sdk": {
3-
"version": "7.0.305"
3+
"version": "7.0.400"
44
}
55
}

src/SeqCli/Cli/Commands/IngestCommand.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
using SeqCli.Ingestion;
2121
using SeqCli.Levels;
2222
using SeqCli.PlainText;
23+
using SeqCli.Syntax;
2324
using Serilog;
2425
using Serilog.Core;
2526
using Serilog.Events;
@@ -92,11 +93,7 @@ protected override async Task<int> Run()
9293
Func<LogEvent, bool>? filter = null;
9394
if (_filter != null)
9495
{
95-
// Support non-Serilog level names (`@l` can't be overridden by the name resolver). At a later date,
96-
// we hope to be able to use the Serilog.Expressions AST to do this reliably (at the moment, all occurrences
97-
// of @l, whether referring to the property or not, will be replaced).
98-
var expr = _filter.Replace("@l", "@Level").Replace("@Level", $"coalesce(@p['{SurrogateLevelProperty.PropertyName}'],@l)");
99-
var eval = SerilogExpression.Compile(expr, nameResolver: new SeqBuiltInNameResolver());
96+
var eval = SeqSyntax.CompileExpression(_filter);
10097
filter = evt => ExpressionResult.IsTrue(eval(evt));
10198
}
10299

src/SeqCli/SeqCli.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@
3333
<PackageReference Include="Serilog.Formatting.Compact" Version="1.1.0" />
3434
<PackageReference Include="Serilog.Formatting.Compact.Reader" Version="2.0.0" />
3535
<PackageReference Include="Serilog.Sinks.Console" Version="4.1.0" />
36-
<PackageReference Include="Autofac" Version="7.0.1" />
36+
<PackageReference Include="Autofac" Version="7.1.0" />
3737
<PackageReference Include="Serilog.Sinks.Seq" Version="5.2.2" />
3838
<PackageReference Include="Superpower" Version="3.0.0" />
3939
<PackageReference Include="System.Reactive" Version="6.0.0" />
4040
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="7.0.1" />
41-
<PackageReference Include="Seq.Api" Version="2023.3.0" />
42-
<PackageReference Include="Seq.Apps" Version="2021.4.0" />
41+
<PackageReference Include="Seq.Api" Version="2023.4.0" />
42+
<PackageReference Include="Seq.Apps" Version="2023.4.0" />
4343
<PackageReference Include="Tavis.UriTemplates" Version="2.0.0" />
4444
</ItemGroup>
4545
<ItemGroup>

src/SeqCli/Ingestion/SeqBuiltInNameResolver.cs renamed to src/SeqCli/Syntax/SeqBuiltInNameResolver.cs

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@
1515
using System.Diagnostics.CodeAnalysis;
1616
using Serilog.Expressions;
1717

18-
#nullable enable
19-
20-
namespace SeqCli.Ingestion;
18+
namespace SeqCli.Syntax;
2119

2220
/// <summary>
2321
/// Extends Serilog.Expressions with support for commonly-used Seq property names.
@@ -30,26 +28,26 @@ public override bool TryResolveBuiltInPropertyName(string alias, [NotNullWhen(tr
3028
{
3129
switch (alias)
3230
{
33-
case "@Properties":
34-
target = "@p";
31+
case "Properties":
32+
target = "p";
3533
return true;
36-
case "@Timestamp":
37-
target = "@t";
34+
case "Timestamp":
35+
target = "t";
3836
return true;
39-
case "@Level":
40-
target = "@l";
37+
case "Level":
38+
target = "l";
4139
return true;
42-
case "@Message":
43-
target = "@m";
40+
case "Message":
41+
target = "m";
4442
return true;
45-
case "@MessageTemplate":
46-
target = "@mt";
43+
case "MessageTemplate":
44+
target = "mt";
4745
return true;
48-
case "@EventType":
49-
target = "@i";
46+
case "EventType":
47+
target = "i";
5048
return true;
51-
case "@Exception":
52-
target = "@x";
49+
case "Exception":
50+
target = "x";
5351
return true;
5452
default:
5553
target = null;

src/SeqCli/Syntax/SeqSyntax.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using SeqCli.Levels;
2+
using Serilog.Expressions;
3+
4+
namespace SeqCli.Syntax;
5+
6+
static class SeqSyntax
7+
{
8+
public static CompiledExpression CompileExpression(string expression)
9+
{
10+
// Support non-Serilog level names (`@l` can't be overridden by the name resolver). At a later date,
11+
// we'll use the Seq.Syntax package to do this reliably (at the moment, all occurrences
12+
// of @l, whether referring to the property or not, will be replaced).
13+
var expr = expression.Replace("@l", "@Level").Replace("@Level", $"coalesce(@p['{SurrogateLevelProperty.PropertyName}'],@l)");
14+
return SerilogExpression.Compile(expr, nameResolver: new SeqBuiltInNameResolver());
15+
}
16+
}

test/SeqCli.EndToEnd/SeqCli.EndToEnd.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<TargetFrameworks>net7.0;net7.0-windows</TargetFrameworks>
66
</PropertyGroup>
77
<ItemGroup>
8-
<PackageReference Include="Autofac" Version="7.0.1" />
8+
<PackageReference Include="Autofac" Version="7.1.0" />
99
<PackageReference Include="xunit" Version="2.5.0" />
1010
<PackageReference Include="Serilog.Sinks.Seq" Version="5.2.2" />
1111
</ItemGroup>

test/SeqCli.Tests/SeqCli.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<TargetFrameworks>net7.0;net7.0-windows</TargetFrameworks>
44
</PropertyGroup>
55
<ItemGroup>
6-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.3" />
6+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.1" />
77
<PackageReference Include="xunit" Version="2.5.0" />
88
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.0">
99
<PrivateAssets>all</PrivateAssets>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using System;
2+
using System.Linq;
3+
using SeqCli.Levels;
4+
using SeqCli.Syntax;
5+
using Serilog.Events;
6+
using Serilog.Parsing;
7+
using Xunit;
8+
9+
namespace SeqCli.Tests.Syntax;
10+
11+
public class SeqSyntaxTests
12+
{
13+
[Fact]
14+
public void MessageIsExposed()
15+
{
16+
var evt = new LogEvent(DateTimeOffset.Now, LogEventLevel.Information, null,
17+
new MessageTemplateParser().Parse("Hello"), ArraySegment<LogEventProperty>.Empty);
18+
19+
var expr = SeqSyntax.CompileExpression("@Message");
20+
var result = expr(evt);
21+
var scalar = Assert.IsType<ScalarValue>(result);
22+
Assert.Equal("Hello", scalar.Value);
23+
}
24+
25+
[Fact]
26+
public void SurrogateLevelIsExposed()
27+
{
28+
var evt = new LogEvent(DateTimeOffset.Now, LogEventLevel.Information, null, new MessageTemplate(Enumerable.Empty<MessageTemplateToken>()), new[]
29+
{
30+
new LogEventProperty(SurrogateLevelProperty.PropertyName, new ScalarValue("Warning"))
31+
});
32+
33+
var expr = SeqSyntax.CompileExpression("@Level");
34+
var result = expr(evt);
35+
var scalar = Assert.IsType<ScalarValue>(result);
36+
Assert.Equal("Warning", scalar.Value);
37+
}
38+
}

0 commit comments

Comments
 (0)