feat(services): add Serilog

This commit is contained in:
Collin M. Barrett 2020-09-10 05:27:48 -05:00
parent 8f9a193f0b
commit e8d5db7121
20 changed files with 222 additions and 70 deletions

View file

@ -1,5 +1,11 @@
version: 2
updates:
- package-ecosystem: nuget
directory: "/services/sharedKernel/src/FilterLists.SharedKernel.Logging"
schedule:
interval: daily
time: "11:00"
open-pull-requests-limit: 99
- package-ecosystem: docker
directory: "/services/archival/src/FilterLists.Archival.Api"
schedule:

View file

@ -54,9 +54,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Archival", "Archival", "{5E
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilterLists.Archival.Api", "archival\src\FilterLists.Archival.Api\FilterLists.Archival.Api.csproj", "{F625C241-0501-4AEB-8B82-609C93EE6B7D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.Archival.Application", "archival\src\FilterLists.Archival.Application\FilterLists.Archival.Application.csproj", "{11669839-E666-477B-A1B6-276041AD3768}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilterLists.Archival.Application", "archival\src\FilterLists.Archival.Application\FilterLists.Archival.Application.csproj", "{11669839-E666-477B-A1B6-276041AD3768}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.Archival.Infrastructure", "archival\src\FilterLists.Archival.Infrastructure\FilterLists.Archival.Infrastructure.csproj", "{A0B77015-E8C4-41D3-B63D-BF818026298C}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FilterLists.Archival.Infrastructure", "archival\src\FilterLists.Archival.Infrastructure\FilterLists.Archival.Infrastructure.csproj", "{A0B77015-E8C4-41D3-B63D-BF818026298C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SharedKernel", "SharedKernel", "{59197818-6C72-4A3C-A595-49F3D7D2EB18}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FilterLists.SharedKernel.Logging", "sharedKernel\src\FilterLists.SharedKernel.Logging\FilterLists.SharedKernel.Logging.csproj", "{5485F55E-DFED-4DA0-8A00-220B081FAC96}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -104,6 +108,10 @@ Global
{A0B77015-E8C4-41D3-B63D-BF818026298C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A0B77015-E8C4-41D3-B63D-BF818026298C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A0B77015-E8C4-41D3-B63D-BF818026298C}.Release|Any CPU.Build.0 = Release|Any CPU
{5485F55E-DFED-4DA0-8A00-220B081FAC96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5485F55E-DFED-4DA0-8A00-220B081FAC96}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5485F55E-DFED-4DA0-8A00-220B081FAC96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5485F55E-DFED-4DA0-8A00-220B081FAC96}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -119,6 +127,7 @@ Global
{F625C241-0501-4AEB-8B82-609C93EE6B7D} = {5E52FEF9-9605-4ACB-8A42-A20E06331599}
{11669839-E666-477B-A1B6-276041AD3768} = {5E52FEF9-9605-4ACB-8A42-A20E06331599}
{A0B77015-E8C4-41D3-B63D-BF818026298C} = {5E52FEF9-9605-4ACB-8A42-A20E06331599}
{5485F55E-DFED-4DA0-8A00-220B081FAC96} = {59197818-6C72-4A3C-A595-49F3D7D2EB18}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {758B57EF-7505-4BE2-90A2-E2DE2EC32909}

View file

@ -6,18 +6,20 @@ WORKDIR /app
FROM mcr.microsoft.com/dotnet/core/sdk:3.1.401-alpine AS build
# restore API
WORKDIR /src
COPY archival/src/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj FilterLists.Archival.Infrastructure/
COPY archival/src/FilterLists.Archival.Application/FilterLists.Archival.Application.csproj FilterLists.Archival.Application/
WORKDIR /src/FilterLists.Archival.Api
WORKDIR /app
COPY sharedKernel/src/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj sharedKernel/src/FilterLists.SharedKernel.Logging/
COPY archival/src/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj archival/src/FilterLists.Archival.Infrastructure/
COPY archival/src/FilterLists.Archival.Application/FilterLists.Archival.Application.csproj archival/src/FilterLists.Archival.Application/
WORKDIR /app/archival/src/FilterLists.Archival.Api
COPY archival/src/FilterLists.Archival.Api/FilterLists.Archival.Api.csproj .
RUN dotnet restore
# build API
WORKDIR /src
COPY archival/src/FilterLists.Archival.Infrastructure/. FilterLists.Archival.Infrastructure/
COPY archival/src/FilterLists.Archival.Application/. FilterLists.Archival.Application/
WORKDIR /src/FilterLists.Archival.Api
WORKDIR /app
COPY sharedKernel/src/FilterLists.SharedKernel.Logging/. sharedKernel/src/FilterLists.SharedKernel.Logging/
COPY archival/src/FilterLists.Archival.Infrastructure/. archival/src/FilterLists.Archival.Infrastructure/
COPY archival/src/FilterLists.Archival.Application/. archival/src/FilterLists.Archival.Application/
WORKDIR /app/archival/src/FilterLists.Archival.Api
COPY archival/src/FilterLists.Archival.Api/. .
RUN dotnet publish -c Release --no-restore -o /app/publish -p:PublishReadyToRun=true -p:PublishSingleFile=true -p:PublishTrimmed=true -r linux-musl-x64

View file

@ -6,18 +6,20 @@ WORKDIR /app
FROM mcr.microsoft.com/dotnet/core/sdk:3.1.401-alpine AS build
# restore API
WORKDIR /src
COPY archival/src/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj FilterLists.Archival.Infrastructure/
COPY archival/src/FilterLists.Archival.Application/FilterLists.Archival.Application.csproj FilterLists.Archival.Application/
WORKDIR /src/FilterLists.Archival.Api
WORKDIR /app
COPY sharedKernel/src/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj sharedKernel/src/FilterLists.SharedKernel.Logging/
COPY archival/src/FilterLists.Archival.Infrastructure/FilterLists.Archival.Infrastructure.csproj archival/src/FilterLists.Archival.Infrastructure/
COPY archival/src/FilterLists.Archival.Application/FilterLists.Archival.Application.csproj archival/src/FilterLists.Archival.Application/
WORKDIR /app/archival/src/FilterLists.Archival.Api
COPY archival/src/FilterLists.Archival.Api/FilterLists.Archival.Api.csproj .
RUN dotnet restore
# build API
WORKDIR /src
COPY archival/src/FilterLists.Archival.Infrastructure/. FilterLists.Archival.Infrastructure/
COPY archival/src/FilterLists.Archival.Application/. FilterLists.Archival.Application/
WORKDIR /src/FilterLists.Archival.Api
WORKDIR /app
COPY sharedKernel/src/FilterLists.SharedKernel.Logging/. sharedKernel/src/FilterLists.SharedKernel.Logging/
COPY archival/src/FilterLists.Archival.Infrastructure/. archival/src/FilterLists.Archival.Infrastructure/
COPY archival/src/FilterLists.Archival.Application/. archival/src/FilterLists.Archival.Application/
WORKDIR /app/archival/src/FilterLists.Archival.Api
COPY archival/src/FilterLists.Archival.Api/. .
RUN dotnet publish --no-restore -o /app/publish -r linux-musl-x64

View file

@ -1,6 +1,8 @@
using System.Threading.Tasks;
using FilterLists.Archival.Application;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using static FilterLists.SharedKernel.Logging.HostRunner;
namespace FilterLists.Archival.Api
{
@ -8,13 +10,17 @@ public static class Program
{
public static async Task Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
await host.RunAsync();
await TryRunWithLoggingAsync(async () =>
{
var host = CreateHostBuilder(args).Build();
await host.RunAsync();
});
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.UseApplication()
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>());
}
}

View file

@ -3,14 +3,20 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace FilterLists.Archival.Application
{
public static class ServiceCollectionExtension
public static class ConfigurationExtensions
{
public static IHostBuilder UseApplication(this IHostBuilder hostBuilder)
{
return hostBuilder.UseInfrastructure();
}
public static void AddApplicationServices(this IServiceCollection services, IConfiguration configuration)
{
services.AddMediatR(typeof(ServiceCollectionExtension).Assembly);
services.AddMediatR(typeof(ConfigurationExtensions).Assembly);
services.AddInfrastructureServices(configuration);
}

View file

@ -1,14 +1,21 @@
using System;
using FilterLists.Archival.Infrastructure.Persistence;
using FilterLists.Archival.Infrastructure.Scheduling;
using FilterLists.SharedKernel.Logging;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace FilterLists.Archival.Infrastructure
{
public static class ServiceCollectionExtension
public static class ConfigurationExtensions
{
public static IHostBuilder UseInfrastructure(this IHostBuilder hostBuilder)
{
return hostBuilder.UseLogging();
}
public static void AddInfrastructureServices(this IServiceCollection services, IConfiguration configuration)
{
_ = configuration ?? throw new ArgumentNullException(nameof(configuration));

View file

@ -38,4 +38,8 @@
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.8" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\sharedKernel\src\FilterLists.SharedKernel.Logging\FilterLists.SharedKernel.Logging.csproj" />
</ItemGroup>
</Project>

View file

@ -5,7 +5,7 @@
namespace FilterLists.Archival.Infrastructure.Persistence
{
internal static class ServiceCollectionExtension
internal static class ConfigurationExtensions
{
public static void AddPersistenceServices(this IServiceCollection services, IConfiguration configuration)
{

View file

@ -6,7 +6,7 @@
namespace FilterLists.Archival.Infrastructure.Scheduling
{
internal static class ServiceCollectionExtension
internal static class ConfigurationExtensions
{
private static ConnectionMultiplexer _redis = null!;

View file

@ -7,22 +7,24 @@ EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1.401-alpine AS build
# restore API
WORKDIR /src
COPY directory/src/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/FilterLists.Directory.Application.csproj FilterLists.Directory.Application/
WORKDIR /src/FilterLists.Directory.Api
WORKDIR /app
COPY sharedKernel/src/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj sharedKernel/src/FilterLists.SharedKernel.Logging/
COPY directory/src/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj directory/src/FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj directory/src/FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj directory/src/FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/FilterLists.Directory.Application.csproj directory/src/FilterLists.Directory.Application/
WORKDIR /app/directory/src/FilterLists.Directory.Api
COPY directory/src/FilterLists.Directory.Api/FilterLists.Directory.Api.csproj .
RUN dotnet restore
# build API
WORKDIR /src
COPY directory/src/FilterLists.Directory.Domain/. FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/. FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/. FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/. FilterLists.Directory.Application/
WORKDIR /src/FilterLists.Directory.Api
WORKDIR /app
COPY sharedKernel/src/FilterLists.SharedKernel.Logging/. sharedKernel/src/FilterLists.SharedKernel.Logging/
COPY directory/src/FilterLists.Directory.Domain/. directory/src/FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/. directory/src/FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/. directory/src/FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/. directory/src/FilterLists.Directory.Application/
WORKDIR /app/directory/src/FilterLists.Directory.Api
COPY directory/src/FilterLists.Directory.Api/. .
RUN dotnet publish -c Release --no-restore -o /app/publish -p:PublishReadyToRun=true -p:PublishSingleFile=true -p:PublishTrimmed=true -r linux-musl-x64

View file

@ -7,22 +7,24 @@ EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1.401-alpine AS build
# restore API
WORKDIR /src
COPY directory/src/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/FilterLists.Directory.Application.csproj FilterLists.Directory.Application/
WORKDIR /src/FilterLists.Directory.Api
WORKDIR /app
COPY sharedKernel/src/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj sharedKernel/src/FilterLists.SharedKernel.Logging/
COPY directory/src/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj directory/src/FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj directory/src/FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj directory/src/FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/FilterLists.Directory.Application.csproj directory/src/FilterLists.Directory.Application/
WORKDIR /app/directory/src/FilterLists.Directory.Api
COPY directory/src/FilterLists.Directory.Api/FilterLists.Directory.Api.csproj .
RUN dotnet restore
# build API
WORKDIR /src
COPY directory/src/FilterLists.Directory.Domain/. FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/. FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/. FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/. FilterLists.Directory.Application/
WORKDIR /src/FilterLists.Directory.Api
WORKDIR /app
COPY sharedKernel/src/FilterLists.SharedKernel.Logging/. sharedKernel/src/FilterLists.SharedKernel.Logging/
COPY directory/src/FilterLists.Directory.Domain/. directory/src/FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/. directory/src/FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/. directory/src/FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/. directory/src/FilterLists.Directory.Application/
WORKDIR /app/directory/src/FilterLists.Directory.Api
COPY directory/src/FilterLists.Directory.Api/. .
RUN dotnet publish --no-restore -o /app/publish -r linux-musl-x64

View file

@ -3,23 +3,25 @@ FROM mcr.microsoft.com/dotnet/core/sdk:3.1.401-alpine AS test-migrations
ENTRYPOINT ["dotnet", "test", "--logger:trx"]
# restore
WORKDIR /src
COPY directory/src/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/FilterLists.Directory.Application.csproj FilterLists.Directory.Application/
COPY directory/src/FilterLists.Directory.Api/FilterLists.Directory.Api.csproj FilterLists.Directory.Api/
WORKDIR /tests/FilterLists.Directory.Infrastructure.Migrations.Tests
WORKDIR /app
COPY sharedKernel/src/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj sharedKernel/src/FilterLists.SharedKernel.Logging/
COPY directory/src/FilterLists.Directory.Domain/FilterLists.Directory.Domain.csproj directory/src/FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj directory/src/FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj directory/src/FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/FilterLists.Directory.Application.csproj directory/src/FilterLists.Directory.Application/
COPY directory/src/FilterLists.Directory.Api/FilterLists.Directory.Api.csproj directory/src/FilterLists.Directory.Api/
WORKDIR /app/directory/tests/FilterLists.Directory.Infrastructure.Migrations.Tests
COPY directory/tests/FilterLists.Directory.Infrastructure.Migrations.Tests/FilterLists.Directory.Infrastructure.Migrations.Tests.csproj .
RUN dotnet restore
# build
WORKDIR /src
COPY directory/src/FilterLists.Directory.Domain/. FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/. FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/. FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/. FilterLists.Directory.Application/
COPY directory/src/FilterLists.Directory.Api/. FilterLists.Directory.Api/
WORKDIR /tests/FilterLists.Directory.Infrastructure.Migrations.Tests
WORKDIR /app
COPY sharedKernel/src/FilterLists.SharedKernel.Logging/. sharedKernel/src/FilterLists.SharedKernel.Logging/
COPY directory/src/FilterLists.Directory.Domain/. directory/src/FilterLists.Directory.Domain/
COPY directory/src/FilterLists.Directory.Infrastructure/. directory/src/FilterLists.Directory.Infrastructure/
COPY directory/src/FilterLists.Directory.Infrastructure.Migrations/. directory/src/FilterLists.Directory.Infrastructure.Migrations/
COPY directory/src/FilterLists.Directory.Application/. directory/src/FilterLists.Directory.Application/
COPY directory/src/FilterLists.Directory.Api/. directory/src/FilterLists.Directory.Api/
WORKDIR /app/directory/tests/FilterLists.Directory.Infrastructure.Migrations.Tests
COPY directory/tests/FilterLists.Directory.Infrastructure.Migrations.Tests/. .
RUN dotnet build -c Release --no-restore -r linux-musl-x64

View file

@ -1,7 +1,9 @@
using System.Threading.Tasks;
using FilterLists.Directory.Application;
using FilterLists.Directory.Infrastructure.Persistence;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using static FilterLists.SharedKernel.Logging.HostRunner;
namespace FilterLists.Directory.Api
{
@ -9,14 +11,18 @@ public static class Program
{
public static async Task Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
await host.MigrateAsync();
await host.RunAsync();
await TryRunWithLoggingAsync(async () =>
{
var host = CreateHostBuilder(args).Build();
await host.MigrateAsync();
await host.RunAsync();
});
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.UseApplication()
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>());
}
}

View file

@ -3,15 +3,21 @@
using MediatR;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace FilterLists.Directory.Application
{
public static class ServiceCollectionExtension
public static class ConfigurationExtensions
{
public static IHostBuilder UseApplication(this IHostBuilder hostBuilder)
{
return hostBuilder.UseInfrastructure();
}
public static void AddApplicationServices(this IServiceCollection services, IConfiguration configuration)
{
services.AddMediatR(typeof(ServiceCollectionExtension).Assembly);
services.AddAutoMapper(typeof(ServiceCollectionExtension));
services.AddMediatR(typeof(ConfigurationExtensions).Assembly);
services.AddAutoMapper(typeof(ConfigurationExtensions));
services.AddInfrastructureServices(configuration);
}
}

View file

@ -1,12 +1,19 @@
using FilterLists.Directory.Infrastructure.Persistence.Queries.Context;
using FilterLists.SharedKernel.Logging;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace FilterLists.Directory.Infrastructure
{
public static class ServiceCollectionExtension
public static class ConfigurationExtensions
{
public static IHostBuilder UseInfrastructure(this IHostBuilder hostBuilder)
{
return hostBuilder.UseLogging();
}
public static void AddInfrastructureServices(this IServiceCollection services, IConfiguration configuration)
{
services.AddDbContextPool<QueryDbContext>(o =>

View file

@ -34,6 +34,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\sharedKernel\src\FilterLists.SharedKernel.Logging\FilterLists.SharedKernel.Logging.csproj" />
<ProjectReference Include="..\FilterLists.Directory.Domain\FilterLists.Directory.Domain.csproj" />
</ItemGroup>

View file

@ -0,0 +1,13 @@
using Microsoft.Extensions.Hosting;
using Serilog;
namespace FilterLists.SharedKernel.Logging
{
public static class ConfigurationExtensions
{
public static IHostBuilder UseLogging(this IHostBuilder hostBuilder)
{
return hostBuilder.UseSerilog();
}
}
}

View file

@ -0,0 +1,35 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
<PropertyGroup>
<Authors>Collin M. Barrett</Authors>
<Company>FilterLists</Company>
<Product>FilterLists Shared Kernel Logging</Product>
<Description>The independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances.</Description>
<Copyright>Copyright (c) 2020 Collin M. Barrett</Copyright>
<RepositoryUrl>https://github.com/collinbarrett/FilterLists</RepositoryUrl>
<PackageProjectUrl>https://filterlists.com</PackageProjectUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<NoWarn>1701;1702;CA2007</NoWarn>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<NoWarn>CA2007</NoWarn>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Serilog.AspNetCore" Version="3.4.0" />
</ItemGroup>
</Project>

View file

@ -0,0 +1,36 @@
using System;
using System.Threading.Tasks;
using Serilog;
using Serilog.Events;
namespace FilterLists.SharedKernel.Logging
{
public static class HostRunner
{
public static async Task<int> TryRunWithLoggingAsync(Func<Task> runHostAsync)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
try
{
Log.Information("Starting host");
await runHostAsync();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
}
}