Skip to content

Commit

Permalink
Upgrade to .net 8.0
Browse files Browse the repository at this point in the history
  • Loading branch information
aimenux committed Sep 15, 2024
1 parent 39aadf3 commit e175694
Show file tree
Hide file tree
Showing 10 changed files with 147 additions and 157 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v1
uses: actions/setup-dotnet@v4
with:
dotnet-version: 5.0.x
dotnet-version: 8.0.x
- name: Restore dependencies
run: dotnet restore
- name: Build
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -348,3 +348,6 @@ MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/

# JetBrains
.idea/*
22 changes: 11 additions & 11 deletions App/App.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.2" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="5.0.0" />
<PackageReference Include="Serilog" Version="2.10.0" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="4.1.2" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.1.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
<PackageReference Include="Serilog.Sinks.Udp" Version="7.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
<PackageReference Include="Serilog" Version="4.0.1" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="8.0.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="8.0.2" />
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
<PackageReference Include="Serilog.Sinks.Udp" Version="10.0.0" />
</ItemGroup>

<ItemGroup>
Expand Down
43 changes: 21 additions & 22 deletions App/Extensions/ConfigurationExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,33 +1,32 @@
using System.Net.Sockets;
using Microsoft.Extensions.Configuration;

namespace App.Extensions
namespace App.Extensions;

public static class ConfigurationExtensions
{
public static class ConfigurationExtensions
public static string GetOutputTemplate(this IConfiguration configuration)
{
public static string GetOutputTemplate(this IConfiguration configuration)
{
return configuration["Serilog:WriteTo:0:Args:outputTemplate"];
}
return configuration["Serilog:WriteTo:0:Args:outputTemplate"];
}

public static string GetFilePath(this IConfiguration configuration)
{
return configuration["Serilog:WriteTo:1:Args:path"];
}
public static string GetFilePath(this IConfiguration configuration)
{
return configuration["Serilog:WriteTo:1:Args:path"];
}

public static int GetRemotePort(this IConfiguration configuration)
{
return configuration.GetValue<int>("Serilog:WriteTo:2:Args:remotePort");
}
public static int GetRemotePort(this IConfiguration configuration)
{
return configuration.GetValue<int>("Serilog:WriteTo:2:Args:remotePort");
}

public static string GetRemoteAddress(this IConfiguration configuration)
{
return configuration["Serilog:WriteTo:2:Args:remoteAddress"];
}
public static string GetRemoteAddress(this IConfiguration configuration)
{
return configuration["Serilog:WriteTo:2:Args:remoteAddress"];
}

public static AddressFamily GetAddressFamily(this IConfiguration configuration)
{
return configuration.GetValue<AddressFamily>("Serilog:WriteTo:2:Args:family");
}
public static AddressFamily GetAddressFamily(this IConfiguration configuration)
{
return configuration.GetValue<AddressFamily>("Serilog:WriteTo:2:Args:family");
}
}
76 changes: 37 additions & 39 deletions App/Extensions/HostBuilderExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,52 +5,50 @@
using Serilog.Events;
using Serilog.Sinks.Udp.TextFormatters;

namespace App.Extensions
namespace App.Extensions;

public static class HostBuilderExtensions
{
public static class HostBuilderExtensions
public static IHostBuilder UseRandomConfigSerilog(this IHostBuilder builder)
{
public static IHostBuilder UseRandomConfigSerilog(this IHostBuilder builder)
{
var seed = Guid.NewGuid().GetHashCode();
var random = new Random(seed);
var randomValue = random.Next(seed, int.MaxValue);
return randomValue % 2 == 0
? builder.UseJsonConfigSerilog()
: builder.UseFluentConfigSerilog();
}
return builder.UseJsonConfigSerilog();
var randomValue = Random.Shared.Next();

Check warning on line 15 in App/Extensions/HostBuilderExtensions.cs

View workflow job for this annotation

GitHub Actions / build

Unreachable code detected

Check warning on line 15 in App/Extensions/HostBuilderExtensions.cs

View workflow job for this annotation

GitHub Actions / build

Unreachable code detected
return randomValue % 2 == 0
? builder.UseJsonConfigSerilog()
: builder.UseFluentConfigSerilog();
}

public static IHostBuilder UseJsonConfigSerilog(this IHostBuilder builder)
private static IHostBuilder UseJsonConfigSerilog(this IHostBuilder builder)
{
return builder.UseSerilog((hostingContext, loggerConfiguration) =>
{
return builder.UseSerilog((hostingContext, loggerConfiguration) =>
{
SelfLog.Enable(Console.Error);
SelfLog.Enable(Console.Error);
loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration)
.Enrich.FromLogContext();
});
}
loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration)
.Enrich.FromLogContext();
});
}

public static IHostBuilder UseFluentConfigSerilog(this IHostBuilder builder)
private static IHostBuilder UseFluentConfigSerilog(this IHostBuilder builder)
{
return builder.UseSerilog((hostingContext, loggerConfiguration) =>
{
return builder.UseSerilog((hostingContext, loggerConfiguration) =>
{
SelfLog.Enable(Console.Error);
SelfLog.Enable(Console.Error);
var filePath = hostingContext.Configuration.GetFilePath();
var remotePort = hostingContext.Configuration.GetRemotePort();
var addressFamily = hostingContext.Configuration.GetAddressFamily();
var remoteAddress = hostingContext.Configuration.GetRemoteAddress();
var outputTemplate = hostingContext.Configuration.GetOutputTemplate();
var filePath = hostingContext.Configuration.GetFilePath();
var remotePort = hostingContext.Configuration.GetRemotePort();
var addressFamily = hostingContext.Configuration.GetAddressFamily();
var remoteAddress = hostingContext.Configuration.GetRemoteAddress();
var outputTemplate = hostingContext.Configuration.GetOutputTemplate();
loggerConfiguration
.MinimumLevel.Verbose()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console(outputTemplate: outputTemplate)
.WriteTo.File(filePath, rollingInterval: RollingInterval.Day)
.WriteTo.Udp(remoteAddress, remotePort, addressFamily, new Log4jTextFormatter());
});
}
loggerConfiguration
.MinimumLevel.Verbose()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console(outputTemplate: outputTemplate)
.WriteTo.File(filePath, rollingInterval: RollingInterval.Day)
.WriteTo.Udp(remoteAddress, remotePort, addressFamily, new Log4jTextFormatter());
});
}
}
}
18 changes: 18 additions & 0 deletions App/Extensions/LoggingBuilderExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

namespace App.Extensions;

public static class LoggingBuilderExtensions
{
public static void AddDefaultLogger(this ILoggingBuilder loggingBuilder)
{
var categoryName = typeof(Program).Namespace!;
var services = loggingBuilder.Services;
services.AddSingleton(serviceProvider =>
{
var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
return loggerFactory.CreateLogger(categoryName);
});
}
}
72 changes: 23 additions & 49 deletions App/Program.cs
Original file line number Diff line number Diff line change
@@ -1,61 +1,35 @@
using System;
using System.IO;
using System.Threading.Tasks;
using App.Extensions;
using App.Services;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace App
namespace App;

public static class Program
{
public static class Program
public static async Task Main(string[] args)
{
public static async Task Main(string[] args)
{
using (var host = CreateHostBuilder(args).Build())
{
var service = host.Services.GetRequiredService<IDummyService>();
await service.DoNothingAsync();
}

Console.WriteLine("Press any key to exit !");
Console.ReadKey();
}

private static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((_, config) =>
{
config.AddCommandLine(args);
config.AddEnvironmentVariables();
config.SetBasePath(Directory.GetCurrentDirectory());
var environment = Environment.GetEnvironmentVariable("ENVIRONMENT");
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
config.AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true);
})
.ConfigureServices((_, services) =>
{
services.AddTransient<IDummyService, DummyService>();
})
.ConfigureLogging((_, loggingBuilder) =>
{
loggingBuilder.ClearProviders();
loggingBuilder.AddNonGenericLogger();
})
.UseRandomConfigSerilog()
.UseConsoleLifetime();
using var host = CreateHostBuilder(args).Build();
var service = host.Services.GetRequiredService<IDummyService>();
await service.DoNothingAsync();
Console.WriteLine("Press any key to exit !");
Console.ReadKey();
}

private static void AddNonGenericLogger(this ILoggingBuilder loggingBuilder)
{
var categoryName = typeof(Program).Namespace;
var services = loggingBuilder.Services;
services.AddSingleton(serviceProvider =>
private static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((_, services) =>
{
var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
return loggerFactory.CreateLogger(categoryName);
});
}
}
}
services.AddTransient<IDummyService, DummyService>();
})
.ConfigureLogging((_, loggingBuilder) =>
{
loggingBuilder.ClearProviders();
loggingBuilder.AddDefaultLogger();
})
.UseRandomConfigSerilog()
.UseConsoleLifetime();
}
47 changes: 23 additions & 24 deletions App/Services/DummyService.cs
Original file line number Diff line number Diff line change
@@ -1,35 +1,34 @@
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;

namespace App.Services
namespace App.Services;

public class DummyService : IDummyService
{
public class DummyService : IDummyService
{
private readonly ILogger _logger;
private readonly ILogger _logger;

public DummyService(ILogger logger)
{
_logger = logger;
}
public DummyService(ILogger logger)
{
_logger = logger;
}

public Task DoNothingAsync()
{
LogToAllLevels(nameof(DoNothingAsync));
return Task.CompletedTask;
}
public Task DoNothingAsync()
{
LogToAllLevels(nameof(DoNothingAsync));
return Task.CompletedTask;
}

private void LogToAllLevels(string message)
private void LogToAllLevels(string message)
{
var scope = $"Scope-{GetType().Namespace}";
using (_logger.BeginScope(scope))
{
var scope = $"Scope-{GetType().Namespace}";
using (_logger.BeginScope(scope))
{
_logger.LogTrace(message);
_logger.LogDebug(message);
_logger.LogInformation(message);
_logger.LogWarning(message);
_logger.LogError(message);
_logger.LogCritical(message);
}
_logger.LogTrace(message);
_logger.LogDebug(message);
_logger.LogInformation(message);
_logger.LogWarning(message);
_logger.LogError(message);
_logger.LogCritical(message);
}
}
}
11 changes: 5 additions & 6 deletions App/Services/IDummyService.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
using System.Threading.Tasks;

namespace App.Services
namespace App.Services;

public interface IDummyService
{
public interface IDummyService
{
Task DoNothingAsync();
}
}
Task DoNothingAsync();
}
Loading

0 comments on commit e175694

Please sign in to comment.