Skip to content

Commit

Permalink
Updated conventions (#1995)
Browse files Browse the repository at this point in the history
  • Loading branch information
david-driscoll committed May 3, 2024
1 parent 4fecf0c commit c55e387
Show file tree
Hide file tree
Showing 25 changed files with 112 additions and 69 deletions.
14 changes: 7 additions & 7 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -94,15 +94,15 @@
<PackageVersion Include="Polly" Version="8.3.1" />
<PackageVersion Include="StronglyTypedId" Version="1.0.0-beta08" />
<PackageVersion Include="Rocket.Surgery.Build.Information" Version="3.3.11" />
<PackageVersion Include="Rocket.Surgery.Conventions" Version="14.0.1-beta.1" />
<PackageVersion Include="Rocket.Surgery.Conventions.Abstractions" Version="14.0.1-beta.1" />
<PackageVersion Include="Rocket.Surgery.CommandLine" Version="14.0.1-beta.1" />
<PackageVersion Include="Rocket.Surgery.Conventions.DependencyModel" Version="14.0.1-beta.1" />
<PackageVersion Include="Rocket.Surgery.Conventions.DryIoc" Version="14.0.1-beta.1" />
<PackageVersion Include="Rocket.Surgery.Conventions" Version="14.0.1-beta.2" />
<PackageVersion Include="Rocket.Surgery.Conventions.Abstractions" Version="14.0.1-beta.2" />
<PackageVersion Include="Rocket.Surgery.CommandLine" Version="14.0.1-beta.2" />
<PackageVersion Include="Rocket.Surgery.Conventions.DependencyModel" Version="14.0.1-beta.2" />
<PackageVersion Include="Rocket.Surgery.Conventions.DryIoc" Version="14.0.1-beta.2" />
<PackageVersion Include="Rocket.Surgery.DependencyInjection.Extensions" Version="12.1.0" />
<PackageVersion Include="Rocket.Surgery.Extensions" Version="12.1.0" />
<PackageVersion Include="Rocket.Surgery.Hosting" Version="14.0.1-beta.1" />
<PackageVersion Include="Rocket.Surgery.WebAssembly.Hosting" Version="14.0.1-beta.1" />
<PackageVersion Include="Rocket.Surgery.Hosting" Version="14.0.1-beta.2" />
<PackageVersion Include="Rocket.Surgery.WebAssembly.Hosting" Version="14.0.1-beta.2" />
<PackageVersion Include="Scrutor" Version="4.2.2" />
<PackageVersion Include="Serilog" Version="3.1.1" />
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.1" />
Expand Down
4 changes: 0 additions & 4 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ A common set of libraries used to build console and web applications.
| Rocket.Surgery.LaunchPad.StrawberryShake.Spatial | [![nuget-version-zeenxt+snrtq-badge]![nuget-downloads-zeenxt+snrtq-badge]][nuget-zeenxt+snrtq] |
| Rocket.Surgery.LaunchPad.Telemetry | [![nuget-version-ge/ixoxynyea-badge]![nuget-downloads-ge/ixoxynyea-badge]][nuget-ge/ixoxynyea] |
| Rocket.Surgery.LaunchPad.Testing | [![nuget-version-bhdja8ikzcgq-badge]![nuget-downloads-bhdja8ikzcgq-badge]][nuget-bhdja8ikzcgq] |
| Rocket.Surgery.LaunchPad.Web.Hosting | [![nuget-version-r6lkw/f1bsvg-badge]![nuget-downloads-r6lkw/f1bsvg-badge]][nuget-r6lkw/f1bsvg] |
<!-- nuget packages -->

# Whats next?
Expand Down Expand Up @@ -125,9 +124,6 @@ TBD
[nuget-bhdja8ikzcgq]: https://www.nuget.org/packages/Rocket.Surgery.LaunchPad.Testing/
[nuget-version-bhdja8ikzcgq-badge]: https://img.shields.io/nuget/v/Rocket.Surgery.LaunchPad.Testing.svg?color=004880&logo=nuget&style=flat-square "NuGet Version"
[nuget-downloads-bhdja8ikzcgq-badge]: https://img.shields.io/nuget/dt/Rocket.Surgery.LaunchPad.Testing.svg?color=004880&logo=nuget&style=flat-square "NuGet Downloads"
[nuget-r6lkw/f1bsvg]: https://www.nuget.org/packages/Rocket.Surgery.LaunchPad.Web.Hosting/
[nuget-version-r6lkw/f1bsvg-badge]: https://img.shields.io/nuget/v/Rocket.Surgery.LaunchPad.Web.Hosting.svg?color=004880&logo=nuget&style=flat-square "NuGet Version"
[nuget-downloads-r6lkw/f1bsvg-badge]: https://img.shields.io/nuget/dt/Rocket.Surgery.LaunchPad.Web.Hosting.svg?color=004880&logo=nuget&style=flat-square "NuGet Downloads"
<!-- generated references -->

<!-- nuke-data
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
public class NewtonsoftJsonConvention : IServiceConvention, ISerilogConvention
{
/// <inheritdoc />
public void Register(IConventionContext context, IServiceProvider services, IConfiguration configuration, LoggerConfiguration loggerConfiguration)
public void Register(IConventionContext context, IConfiguration configuration, IServiceProvider services, LoggerConfiguration loggerConfiguration)
{
loggerConfiguration.Destructure.NewtonsoftJsonTypes();
}
Expand All @@ -44,4 +44,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
)
);
}
}
}
2 changes: 1 addition & 1 deletion src/Foundation/Conventions/NodaTimeConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public NodaTimeConvention(FoundationOptions? options = null)
}

/// <inheritdoc />
public void Register(IConventionContext context, IServiceProvider services, IConfiguration configuration, LoggerConfiguration loggerConfiguration)
public void Register(IConventionContext context, IConfiguration configuration, IServiceProvider services, LoggerConfiguration loggerConfiguration)
{
loggerConfiguration.Destructure.NodaTimeTypes(services.GetRequiredService<IDateTimeZoneProvider>());
}
Expand Down
4 changes: 2 additions & 2 deletions src/Foundation/Conventions/SystemTextJsonConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
public class SystemTextJsonConvention : IServiceConvention, ISerilogConvention
{
/// <inheritdoc />
public void Register(IConventionContext context, IServiceProvider services, IConfiguration configuration, LoggerConfiguration loggerConfiguration)
public void Register(IConventionContext context, IConfiguration configuration, IServiceProvider services, LoggerConfiguration loggerConfiguration)
{
loggerConfiguration.Destructure.SystemTextJsonTypes();
}
Expand Down Expand Up @@ -49,4 +49,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
)
);
}
}
}
2 changes: 1 addition & 1 deletion src/Hosting/Conventions/EnvironmentLoggingConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ public class EnvironmentLoggingConvention : ISerilogConvention
/// <param name="loggerConfiguration"></param>
public void Register(
IConventionContext context,
IServiceProvider services,
IConfiguration configuration,
IServiceProvider services,
LoggerConfiguration loggerConfiguration
)
{
Expand Down
2 changes: 1 addition & 1 deletion src/Hosting/Conventions/SerilogConsoleLoggingConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ public SerilogConsoleLoggingConvention(LaunchPadLoggingOptions? options = null)
/// <inheritdoc />
public void Register(
IConventionContext context,
IServiceProvider services,
IConfiguration configuration,
IServiceProvider services,
LoggerConfiguration loggerConfiguration
)
{
Expand Down
2 changes: 1 addition & 1 deletion src/Hosting/Conventions/SerilogDebugLoggingConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ public SerilogDebugLoggingConvention(LaunchPadLoggingOptions? options = null)
/// <inheritdoc />
public void Register(
IConventionContext context,
IServiceProvider services,
IConfiguration configuration,
IServiceProvider services,
LoggerConfiguration loggerConfiguration
)
{
Expand Down
10 changes: 7 additions & 3 deletions src/Hosting/Conventions/SerilogHostingConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,12 @@ public void Register(IConventionContext context, IHostApplicationBuilder builder
foreach (var item in builder
.Services
.Where(
x => x.ImplementationType?.FullName?.StartsWith("Microsoft.Extensions.Logging", StringComparison.Ordinal) == true
&& x.ImplementationType?.FullName.EndsWith("Provider", StringComparison.Ordinal) == true
x =>
{
var type = x.IsKeyedService ? x.KeyedImplementationType : x.ImplementationType;
return type?.FullName?.StartsWith("Microsoft.Extensions.Logging", StringComparison.Ordinal) == true
&& type.FullName.EndsWith("Provider", StringComparison.Ordinal);
}
)
.ToArray()
)
Expand All @@ -55,7 +59,7 @@ public void Register(IConventionContext context, IHostApplicationBuilder builder
else
{
builder.Services.AddSerilog(
(services, loggerConfiguration) => loggerConfiguration.ApplyConventions(context, services),
(services, loggerConfiguration) => loggerConfiguration.ApplyConventions(context, builder.Configuration, services),
_options.PreserveStaticLogger,
_options.WriteToProviders
);
Expand Down
4 changes: 2 additions & 2 deletions src/Serilog/Conventions/ConfigureOptionsLoggingConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ public class ConfigureOptionsLoggingConvention : ISerilogConvention
/// Registers the specified context.
/// </summary>
/// <param name="context">The context.</param>
/// <param name="services"></param>
/// <param name="configuration"></param>
/// <param name="services"></param>
/// <param name="loggerConfiguration"></param>
public void Register(
IConventionContext context,
IServiceProvider services,
IConfiguration configuration,
IServiceProvider services,
LoggerConfiguration loggerConfiguration
)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ public class SerilogEnrichEnvironmentLoggingConvention : ISerilogConvention
/// Registers the specified context.
/// </summary>
/// <param name="context">The context.</param>
/// <param name="services"></param>
/// <param name="configuration"></param>
/// <param name="services"></param>
/// <param name="loggerConfiguration"></param>
public void Register(
IConventionContext context,
IServiceProvider services,
IConfiguration configuration,
IServiceProvider services,
LoggerConfiguration loggerConfiguration
)
{
Expand Down
4 changes: 2 additions & 2 deletions src/Serilog/Conventions/SerilogEnrichLoggingConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ public class SerilogEnrichLoggingConvention : ISerilogConvention
/// Registers the specified context.
/// </summary>
/// <param name="context">The context.</param>
/// <param name="services"></param>
/// <param name="configuration"></param>
/// <param name="services"></param>
/// <param name="loggerConfiguration"></param>
public void Register(
IConventionContext context,
IServiceProvider services,
IConfiguration configuration,
IServiceProvider services,
LoggerConfiguration loggerConfiguration
)
{
Expand Down
4 changes: 2 additions & 2 deletions src/Serilog/Conventions/SerilogEnrichSpansConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ public class SerilogEnrichSpansConvention : ISerilogConvention
/// Registers the specified context.
/// </summary>
/// <param name="context">The context.</param>
/// <param name="services"></param>
/// <param name="configuration"></param>
/// <param name="services"></param>
/// <param name="loggerConfiguration"></param>
public void Register(
IConventionContext context,
IServiceProvider services,
IConfiguration configuration,
IServiceProvider services,
LoggerConfiguration loggerConfiguration
)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ public void Register(IConventionContext context, IConfiguration configuration, I
/// <inheritdoc />
public void Register(
IConventionContext context,
IServiceProvider services,
IConfiguration configuration,
IServiceProvider services,
LoggerConfiguration loggerConfiguration
)
{
Expand Down
6 changes: 3 additions & 3 deletions src/Serilog/ISerilogConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ public interface ISerilogConvention : IConvention
/// A serilog convention
/// </summary>
/// <param name="context"></param>
/// <param name="services"></param>
/// <param name="configuration"></param>
/// <param name="services"></param>
/// <param name="loggerConfiguration"></param>
void Register(IConventionContext context, IServiceProvider services, IConfiguration configuration, LoggerConfiguration loggerConfiguration);
}
void Register(IConventionContext context, IConfiguration configuration, IServiceProvider services, LoggerConfiguration loggerConfiguration);
}
14 changes: 7 additions & 7 deletions src/Serilog/RocketSurgerySerilogExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,22 @@ public static class RocketSurgerySerilogExtensions
/// Apply configuration conventions
/// </summary>
/// <param name="configurationBuilder"></param>
/// <param name="conventionContext"></param>
/// <param name="context"></param>
/// <param name="configuration"></param>
/// <param name="services"></param>
/// <returns></returns>
public static LoggerConfiguration ApplyConventions(
this LoggerConfiguration configurationBuilder,
IConventionContext conventionContext,
IConventionContext context,
IConfiguration configuration,
IServiceProvider services
)
{
var configuration = conventionContext.Get<IConfiguration>()
?? throw new ArgumentException("Configuration was not found in context", nameof(conventionContext));
foreach (var item in conventionContext.Conventions.Get<ISerilogConvention, SerilogConvention>())
foreach (var item in context.Conventions.Get<ISerilogConvention, SerilogConvention>())
{
if (item is ISerilogConvention convention)
convention.Register(conventionContext, services, configuration, configurationBuilder);
else if (item is SerilogConvention @delegate) @delegate(conventionContext, services, configuration, configurationBuilder);
convention.Register(context, configuration, services, configurationBuilder);
else if (item is SerilogConvention @delegate) @delegate(context, configuration, services, configurationBuilder);
}

return configurationBuilder;
Expand Down
46 changes: 43 additions & 3 deletions src/Serilog/SerilogAbstractionsHostBuilderExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// ReSharper disable once CheckNamespace

using Microsoft.Extensions.Configuration;
using Rocket.Surgery.LaunchPad.Serilog;
using Serilog;

// ReSharper disable once CheckNamespace

// ReSharper disable once CheckNamespace
namespace Rocket.Surgery.Conventions;
Expand All @@ -11,6 +13,45 @@ namespace Rocket.Surgery.Conventions;
[PublicAPI]
public static class SerilogAbstractionsHostBuilderExtensions
{
/// <summary>
/// Configure the serilog delegate to the convention scanner
/// </summary>
/// <param name="container">The container.</param>
/// <param name="delegate">The delegate.</param>
/// <returns>IConventionHostBuilder.</returns>
public static ConventionContextBuilder ConfigureSerilog(this ConventionContextBuilder container, Action<LoggerConfiguration> @delegate)
{
return ConfigureSerilog(container, (_, _, _, logger) => @delegate(logger));
}

/// <summary>
/// Configure the serilog delegate to the convention scanner
/// </summary>
/// <param name="container">The container.</param>
/// <param name="delegate">The delegate.</param>
/// <returns>IConventionHostBuilder.</returns>
public static ConventionContextBuilder ConfigureSerilog(
this ConventionContextBuilder container,
Action<IConfiguration, IServiceProvider, LoggerConfiguration> @delegate
)
{
return ConfigureSerilog(container, (_, configuration, services, logger) => @delegate(configuration, services, logger));
}

/// <summary>
/// Configure the serilog delegate to the convention scanner
/// </summary>
/// <param name="container">The container.</param>
/// <param name="delegate">The delegate.</param>
/// <returns>IConventionHostBuilder.</returns>
public static ConventionContextBuilder ConfigureSerilog(
this ConventionContextBuilder container,
Action<IServiceProvider, LoggerConfiguration> @delegate
)
{
return ConfigureSerilog(container, (_, _, services, logger) => @delegate(services, logger));
}

/// <summary>
/// Configure the serilog delegate to the convention scanner
/// </summary>
Expand All @@ -20,7 +61,6 @@ public static class SerilogAbstractionsHostBuilderExtensions
public static ConventionContextBuilder ConfigureSerilog(this ConventionContextBuilder container, SerilogConvention @delegate)
{
ArgumentNullException.ThrowIfNull(container);

ArgumentNullException.ThrowIfNull(@delegate);

container.AppendDelegate(@delegate);
Expand Down
9 changes: 6 additions & 3 deletions src/Serilog/SerilogConventionDelegate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@ namespace Rocket.Surgery.LaunchPad.Serilog;
/// Delegate SerilogConventionDelegate
/// </summary>
/// <param name="context">The context.</param>
/// <param name="services">The services.</param>
/// <param name="configuration">The configuration.</param>
/// <param name="services">The services.</param>
/// <param name="loggerConfiguration">The logger configuration.</param>
[PublicAPI]
public delegate void SerilogConvention(
IConventionContext context, IServiceProvider services, IConfiguration configuration, LoggerConfiguration loggerConfiguration
);
IConventionContext context,
IConfiguration configuration,
IServiceProvider services,
LoggerConfiguration loggerConfiguration
);
4 changes: 2 additions & 2 deletions src/Spatial/Conventions/SpatialConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ namespace Rocket.Surgery.LaunchPad.Spatial.Conventions;
public class SpatialConvention : IServiceConvention, ISerilogConvention
{
/// <inheritdoc />
public void Register(IConventionContext context, IServiceProvider services, IConfiguration configuration, LoggerConfiguration loggerConfiguration)
public void Register(IConventionContext context, IConfiguration configuration, IServiceProvider services, LoggerConfiguration loggerConfiguration)
{
loggerConfiguration.Destructure.NetTopologySuiteTypes();
}
Expand All @@ -35,4 +35,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
(options, factory) => options.ConfigureGeoJsonForLaunchPad(factory)
);
}
}
}
4 changes: 2 additions & 2 deletions src/Telemetry/IOpenTelemetryAsyncConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ public interface IOpenTelemetryAsyncConvention : IConvention
/// <summary>
/// Register metrics
/// </summary>
/// <param name="conventionContext"></param>
/// <param name="context"></param>
/// <param name="configuration"></param>
/// <param name="builder"></param>
/// <param name="cancellationToken"></param>
ValueTask Register(IConventionContext conventionContext, IConfiguration configuration, IOpenTelemetryBuilder builder, CancellationToken cancellationToken);
ValueTask Register(IConventionContext context, IConfiguration configuration, IOpenTelemetryBuilder builder, CancellationToken cancellationToken);
}
4 changes: 2 additions & 2 deletions src/Telemetry/OpenTelemetryAsyncConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ namespace Rocket.Surgery.LaunchPad.Telemetry;
/// <summary>
/// Delegate OpenTelemetryAsyncConvention
/// </summary>
/// <param name="conventionContext"></param>
/// <param name="context"></param>
/// <param name="configuration"></param>
/// <param name="builder"></param>
/// <param name="cancellationToken"></param>
public delegate ValueTask OpenTelemetryAsyncConvention(
IConventionContext conventionContext,
IConventionContext context,
IConfiguration configuration,
IOpenTelemetryBuilder builder,
CancellationToken cancellationToken
Expand Down
4 changes: 2 additions & 2 deletions src/Telemetry/OpenTelemetryConvention.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace Rocket.Surgery.LaunchPad.Telemetry;
/// <summary>
/// Delegate OpenTelemetryConvention
/// </summary>
/// <param name="conventionContext"></param>
/// <param name="context"></param>
/// <param name="configuration"></param>
/// <param name="builder"></param>
public delegate void OpenTelemetryConvention(IConventionContext conventionContext, IConfiguration configuration, IOpenTelemetryBuilder builder);
public delegate void OpenTelemetryConvention(IConventionContext context, IConfiguration configuration, IOpenTelemetryBuilder builder);
Loading

0 comments on commit c55e387

Please sign in to comment.