Skip to content
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
3 changes: 3 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<Project>
<PropertyGroup>
<VersionPrefix>9.0.0</VersionPrefix>
<LangVersion>latest</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging.Configuration;
using Serilog.Sinks.PeriodicBatching;
// ReSharper disable UnusedMember.Global

namespace Microsoft.Extensions.Logging;

Expand All @@ -29,7 +30,7 @@ public static ILoggerFactory AddSeq(this ILoggerFactory loggerFactory, IConfigur
if (loggerFactory == null) throw new ArgumentNullException(nameof(loggerFactory));
if (configuration == null) throw new ArgumentNullException(nameof(configuration));

if (TryCreateProvider(configuration, LogLevel.Information, Array.Empty<Action<EnrichingEvent>>(), out var provider))
if (TryCreateProvider(configuration, LogLevel.Information, [], out var provider))
loggerFactory.AddProvider(provider);

return loggerFactory;
Expand Down Expand Up @@ -137,16 +138,15 @@ static bool TryCreateProvider(
}

var levelOverrides = new Dictionary<string, LogLevel>();
foreach (var overr in configuration.GetSection("LevelOverride").GetChildren())
foreach (var levelOverride in configuration.GetSection("LevelOverride").GetChildren())
{
LogLevel value;
if (!Enum.TryParse(overr.Value, out value))
if (!Enum.TryParse(levelOverride.Value, out LogLevel value))
{
SelfLog.WriteLine("The level override setting `{0}` for `{1}` is invalid", overr.Value, overr.Key);
SelfLog.WriteLine("The level override setting `{0}` for `{1}` is invalid", levelOverride.Value, levelOverride.Key);
continue;
}

levelOverrides[overr.Key] = value;
levelOverrides[levelOverride.Key] = value;
}

provider = CreateProvider(serverUrl, apiKey, minimumLevel, levelOverrides, enrichers);
Expand Down Expand Up @@ -197,7 +197,7 @@ static SerilogLoggerProvider CreateProvider(
var overrides = new Dictionary<string, LoggingLevelSwitch>();
foreach (var levelOverride in levelOverrides)
{
overrides.Add(levelOverride.Key, new LoggingLevelSwitch(levelOverride.Value));
overrides[levelOverride.Key] = new LoggingLevelSwitch(levelOverride.Value);
}

overrideMap = new LevelOverrideMap(overrides, levelSwitch);
Expand All @@ -209,7 +209,7 @@ static SerilogLoggerProvider CreateProvider(
Period = TimeSpan.FromSeconds(2),
});

var logger = new Logger(batchingSink, new Enricher(enrichers ?? Array.Empty<Action<EnrichingEvent>>()), batchingSink.Dispose, levelSwitch, overrideMap);
var logger = new Logger(batchingSink, new Enricher(enrichers ?? []), batchingSink.Dispose, levelSwitch, overrideMap);
var provider = new SerilogLoggerProvider(logger);
return provider;
}
Expand Down
3 changes: 0 additions & 3 deletions src/Seq.Extensions.Logging/Seq.Extensions.Logging.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,8 @@
<PackageIcon>icon.png</PackageIcon>
<PackageProjectUrl>https://github.com/datalust/seq-extensions-logging</PackageProjectUrl>
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
<LangVersion>latest</LangVersion>
<RootNamespace />
<PackageReadmeFile>README.md</PackageReadmeFile>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.

using System.Diagnostics.CodeAnalysis;
using Serilog.Core;
using Serilog.Core.Pipeline;
using Serilog.Events;
using Serilog.Parsing;

namespace Serilog.Parameters;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
<SignAssembly>true</SignAssembly>
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
<RootNamespace>Tests</RootNamespace>
<LangVersion>latest</LangVersion>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System;
using Serilog.Parameters;
using Serilog.Events;
using Seq.Extensions.Logging;
using Tests.Support;
using Xunit;

namespace Tests.Seq.Extensions.Logging;
Expand All @@ -11,54 +11,38 @@ public class EnricherTests
[Fact]
public void EnrichersAreAppliedInOrder()
{
var evt = new LogEvent(
default,
default,
default,
default,
new(),
default,
default
);
var evt = Some.EmptyLogEvent();

new Enricher([
(evt) => evt.AddPropertyIfAbsent("A", 1),
(evt) => evt.AddPropertyIfAbsent("A", 2),
(evt) => evt.AddOrUpdateProperty("B", 1),
(evt) => evt.AddOrUpdateProperty("B", 2),
enrichingEvent => enrichingEvent.AddPropertyIfAbsent("A", 1),
enrichingEvent => enrichingEvent.AddPropertyIfAbsent("A", 2),
enrichingEvent => enrichingEvent.AddOrUpdateProperty("B", 1),
enrichingEvent => enrichingEvent.AddOrUpdateProperty("B", 2),
])
.Enrich(
evt,
new PropertyValueConverter(int.MaxValue, int.MaxValue)
);

Assert.Equal(1, (evt.Properties["A"] as ScalarValue).Value);
Assert.Equal(2, (evt.Properties["B"] as ScalarValue).Value);
Assert.Equal(1, ((ScalarValue)evt.Properties["A"]).Value);
Assert.Equal(2, ((ScalarValue)evt.Properties["B"]).Value);
}

[Fact]
public void FailingEnricherIsHandled()
{
var evt = new LogEvent(
default,
default,
default,
default,
new(),
default,
default
);
var evt = Some.EmptyLogEvent();

new Enricher([
(evt) => evt.AddOrUpdateProperty("A", 1),
enrichingEvent => enrichingEvent.AddOrUpdateProperty("A", 1),
_ => throw new Exception("Enricher Failed"),
(evt) => evt.AddOrUpdateProperty("A", 2),
enrichingEvent => enrichingEvent.AddOrUpdateProperty("A", 2),
])
.Enrich(
evt,
new PropertyValueConverter(int.MaxValue, int.MaxValue)
);

Assert.Equal(2, (evt.Properties["A"] as ScalarValue).Value);
Assert.Equal(2, ((ScalarValue)evt.Properties["A"]).Value);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using System;
using Xunit;
using Serilog.Parameters;
using Serilog.Events;
using Seq.Extensions.Logging;
using Tests.Support;

namespace Tests.Seq.Extensions.Logging;

Expand All @@ -12,43 +12,27 @@ public class EnrichingEventTests
public void AddPropertyIfAbsentAddsProperties()
{
var enriching = new EnrichingEvent(
new LogEvent(
default,
default,
default,
default,
new(),
default,
default
),
Some.EmptyLogEvent(),
new PropertyValueConverter(int.MaxValue, int.MaxValue)
);

enriching.AddPropertyIfAbsent("A", false);
enriching.AddPropertyIfAbsent("A", true);

Assert.Equal(false, (enriching.LogEvent.Properties["A"] as ScalarValue).Value);
Assert.Equal(false, ((ScalarValue)enriching.LogEvent.Properties["A"]).Value);
}

[Fact]
public void AddOrUpdatePropertyAddsProperties()
{
var enriching = new EnrichingEvent(
new LogEvent(
default,
default,
default,
default,
new(),
default,
default
),
Some.EmptyLogEvent(),
new PropertyValueConverter(int.MaxValue, int.MaxValue)
);

enriching.AddOrUpdateProperty("A", false);
enriching.AddOrUpdateProperty("A", true);

Assert.Equal(true, (enriching.LogEvent.Properties["A"] as ScalarValue).Value);
Assert.Equal(true, ((ScalarValue)enriching.LogEvent.Properties["A"]).Value);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
using Seq.Extensions.Logging;
using Serilog.Events;
using System;
using System.Linq;
using Tests.Support;
using Xunit;

Expand All @@ -25,7 +23,7 @@ public void WhenNoDataIsPresentNoPropertyIsAdded()
public void WhenDataIsPresentThePropertyIsAdded()
{
var enricher = new ExceptionDataEnricher();
var exception = new Exception()
var exception = new Exception
{
Data =
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

using System;
using System.Collections;
using Serilog.Events;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Xunit;
using Serilog.Extensions.Logging;
using Seq.Extensions.Logging;
Expand All @@ -34,7 +30,7 @@ static SerilogLoggerTests()
{
var sink = new SerilogSink();

var l = new global::Serilog.Core.Logger(sink, new Enricher(enrichers), null, new global::Serilog.Core.LoggingLevelSwitch(logLevel), null);
var l = new global::Serilog.Core.Logger(sink, new Enricher(enrichers), null, new global::Serilog.Core.LoggingLevelSwitch(logLevel));

var provider = new SerilogLoggerProvider(l);
provider.SetScopeProvider(new LoggerExternalScopeProvider());
Expand Down Expand Up @@ -138,9 +134,9 @@ public void LogsCorrectMessage()
{
var (logger, sink) = SetUp(LogLevel.Trace);

logger.Log<object>(LogLevel.Information, 0, null, null, null!);
logger.Log<object?>(LogLevel.Information, 0, null, null, null!);
logger.Log(LogLevel.Information, 0, TestMessage, null, null!);
logger.Log<object>(LogLevel.Information, 0, null, null, (_, _) => TestMessage);
logger.Log<object?>(LogLevel.Information, 0, null, null, (_, _) => TestMessage);

Assert.Equal(3, sink.Writes.Count);

Expand Down Expand Up @@ -270,7 +266,7 @@ public void OverridesStateEventIdIfSpecified()

const int expected = 3;

logger.Log<KeyValuePair<string, object>[]>(LogLevel.Information, expected, state: [new("EventId", "Something")], exception: null, formatter: (s, e) => "");
logger.Log<KeyValuePair<string, object>[]>(LogLevel.Information, expected, state: [new("EventId", "Something")], exception: null, formatter: (_, _) => "");

Assert.Single(sink.Writes);

Expand Down Expand Up @@ -397,14 +393,14 @@ public void EnrichersAreApplied()
{
var (logger, sink) = SetUp(
LogLevel.Trace,
(evt) => evt.AddPropertyIfAbsent("EnrichedScalar", true),
(evt) => evt.AddPropertyIfAbsent("EnrichedObject", new { a = 1 }, true)
evt => evt.AddPropertyIfAbsent("EnrichedScalar", true),
evt => evt.AddPropertyIfAbsent("EnrichedObject", new { a = 1 }, true)
);

logger.Log(LogLevel.Information, 0, TestMessage, null, null!);

Assert.Equal(true, (sink.Writes[0].Properties["EnrichedScalar"] as ScalarValue).Value);
Assert.Equal(1, ((sink.Writes[0].Properties["EnrichedObject"] as StructureValue).Properties[0].Value as ScalarValue).Value);
Assert.Equal(true, ((ScalarValue)sink.Writes[0].Properties["EnrichedScalar"]).Value);
Assert.Equal(1, ((ScalarValue)((StructureValue)sink.Writes[0].Properties["EnrichedObject"]).Properties[0].Value).Value);
}

class FoodScope : IEnumerable<KeyValuePair<string, object>>
Expand Down Expand Up @@ -450,8 +446,8 @@ IEnumerator IEnumerable.GetEnumerator()
class Person
{
// ReSharper disable once UnusedAutoPropertyAccessor.Local
public string FirstName { get; set; }
public string? FirstName { get; set; }
// ReSharper disable once UnusedAutoPropertyAccessor.Local
public string LastName { get; set; }
public string? LastName { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

using System.Collections.Generic;
using Serilog.Core;
using Serilog.Events;
using Xunit;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.

using System;
using System.Globalization;
using Xunit;
using Serilog.Sinks.PeriodicBatching;
using Xunit;

namespace Seq.Extensions.Logging.Tests.Serilog.Sinks;
namespace Tests.Serilog.Sinks;

public class BatchedConnectionStatusTests
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ public void WhenTheServerSendsALevelTheSwitchIsAdjusted()
[Fact]
public void WhenTheServerSendsNoLevelTheSwitchIsNotInitiallyAdjusted()
{
var lls = new LoggingLevelSwitch(LogLevel.Warning);
lls.MinimumLevel = LogLevel.Critical;
var lls = new LoggingLevelSwitch(LogLevel.Critical);
var cls = new ControlledLevelSwitch(lls);
cls.Update(null);
Assert.Equal(LogLevel.Critical, lls.MinimumLevel);
Expand All @@ -40,14 +39,14 @@ public void WhenTheServerSendsNoLevelTheSwitchIsResetIfPreviouslyAdjusted()
[Fact]
public void WithNoSwitchToControlAllEventsAreIncluded()
{
var cls = new ControlledLevelSwitch(null);
var cls = new ControlledLevelSwitch();
Assert.True(cls.IsIncluded(Some.DebugEvent()));
}

[Fact]
public void WithNoSwitchToControlEventsAreStillFiltered()
{
var cls = new ControlledLevelSwitch(null);
var cls = new ControlledLevelSwitch();
cls.Update(LogLevel.Warning);
Assert.True(cls.IsIncluded(Some.ErrorEvent()));
Assert.False(cls.IsIncluded(Some.InformationEvent()));
Expand All @@ -56,7 +55,7 @@ public void WithNoSwitchToControlEventsAreStillFiltered()
[Fact]
public void WithNoSwitchToControlAllEventsAreIncludedAfterReset()
{
var cls = new ControlledLevelSwitch(null);
var cls = new ControlledLevelSwitch();
cls.Update(LogLevel.Warning);
cls.Update(null);
Assert.True(cls.IsIncluded(Some.DebugEvent()));
Expand All @@ -77,7 +76,7 @@ public void WhenNotControllingASwitchTheControllerIsNotActive()
}

[Fact]
public void AfterServerControlhTheControllerIsAlwaysActive()
public void AfterServerControlTheControllerIsAlwaysActive()
{
var cls = new ControlledLevelSwitch();

Expand Down
Loading