Skip to content

Commit 5ca988f

Browse files
Copilotarturcic
andcommitted
Configure Serilog logging infrastructure and update DI setup
Co-authored-by: arturcic <[email protected]>
1 parent 1e56ea9 commit 5ca988f

File tree

5 files changed

+58
-14
lines changed

5 files changed

+58
-14
lines changed

global.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"src"
66
],
77
"sdk": {
8-
"version": "9.0.306",
9-
"rollForward": "latestFeature"
8+
"version": "10.0.100"
109
}
1110
}

src/GitVersion.App/CliHost.cs

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,64 @@
1+
using System.IO.Abstractions;
2+
using GitVersion;
13
using GitVersion.Agents;
24
using GitVersion.Configuration;
35
using GitVersion.Extensions;
6+
using GitVersion.Logging;
47
using GitVersion.Output;
58
using Microsoft.Extensions.DependencyInjection;
69
using Microsoft.Extensions.Hosting;
10+
using Microsoft.Extensions.Logging;
711
using Microsoft.Extensions.Options;
12+
using Serilog;
813

914
namespace GitVersion;
1015

1116
internal static class CliHost
1217
{
1318
internal static HostApplicationBuilder CreateCliHostBuilder(string[] args)
1419
{
20+
// Parse arguments early to configure logging
21+
var tempServices = new ServiceCollection();
22+
tempServices.AddSingleton<IArgumentParser, ArgumentParser>();
23+
var tempProvider = tempServices.BuildServiceProvider();
24+
var argumentParser = tempProvider.GetRequiredService<IArgumentParser>();
25+
var arguments = argumentParser.ParseArguments(args);
26+
var gitVersionOptions = arguments.ToOptions();
27+
1528
var builder = Host.CreateApplicationBuilder(args);
1629

30+
// Configure Serilog based on parsed arguments
31+
ConfigureSerilog(builder, gitVersionOptions);
32+
1733
builder.Services.AddModule(new GitVersionCoreModule());
1834
builder.Services.AddModule(new GitVersionLibGit2SharpModule());
1935
builder.Services.AddModule(new GitVersionBuildAgentsModule());
2036
builder.Services.AddModule(new GitVersionConfigurationModule());
2137
builder.Services.AddModule(new GitVersionOutputModule());
2238
builder.Services.AddModule(new GitVersionAppModule());
2339

24-
builder.Services.AddSingleton(sp =>
25-
{
26-
var arguments = sp.GetRequiredService<IArgumentParser>().ParseArguments(args);
27-
var gitVersionOptions = arguments.ToOptions();
28-
return Options.Create(gitVersionOptions);
29-
});
40+
builder.Services.AddSingleton(sp => Options.Create(gitVersionOptions));
3041

3142
builder.Services.AddSingleton<GitVersionApp>();
3243

3344
return builder;
3445
}
46+
47+
private static void ConfigureSerilog(HostApplicationBuilder builder, GitVersionOptions options)
48+
{
49+
var loggerConfiguration = LoggingModule.CreateLoggerConfiguration(
50+
options.Verbosity,
51+
options.Output.Contains(OutputType.BuildServer) || options.LogFilePath == "console",
52+
options.LogFilePath != null && options.LogFilePath != "console" ? options.LogFilePath : null,
53+
new FileSystem()
54+
);
55+
56+
Serilog.Log.Logger = loggerConfiguration.CreateLogger();
57+
58+
builder.Services.AddLogging(loggingBuilder =>
59+
{
60+
loggingBuilder.ClearProviders();
61+
loggingBuilder.AddSerilog(Serilog.Log.Logger, dispose: true);
62+
});
63+
}
3564
}

src/GitVersion.Core/GitVersionCommonModule.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ public class GitVersionCommonModule : IGitVersionModule
99
{
1010
public void RegisterTypes(IServiceCollection services)
1111
{
12-
services.AddSingleton<ILog, Log>();
1312
services.AddSingleton<IFileSystem, FileSystem>();
1413
services.AddSingleton<IEnvironment, Environment>();
1514
services.AddSingleton<IConsole, ConsoleAdapter>();

src/GitVersion.Core/Logging/LoggingModule.cs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@
99

1010
namespace GitVersion.Logging;
1111

12-
public class LoggingModule
12+
public static class LoggingModule
1313
{
14-
public static IServiceCollection AddLogging(
15-
IServiceCollection services,
14+
public static LoggerConfiguration CreateLoggerConfiguration(
1615
Verbosity verbosity = Verbosity.Normal,
1716
bool addConsole = false,
1817
string? logFilePath = null,
@@ -32,12 +31,24 @@ public static IServiceCollection AddLogging(
3231
loggerConfiguration = AddFileLogger(loggerConfiguration, fileSystem, logFilePath, verbosity);
3332
}
3433

35-
Log.Logger = loggerConfiguration.CreateLogger();
34+
return loggerConfiguration;
35+
}
36+
37+
public static IServiceCollection AddLogging(
38+
IServiceCollection services,
39+
Verbosity verbosity = Verbosity.Normal,
40+
bool addConsole = false,
41+
string? logFilePath = null,
42+
IFileSystem? fileSystem = null)
43+
{
44+
var loggerConfiguration = CreateLoggerConfiguration(verbosity, addConsole, logFilePath, fileSystem);
45+
46+
Serilog.Log.Logger = loggerConfiguration.CreateLogger();
3647

3748
services.AddLogging(builder =>
3849
{
3950
builder.ClearProviders();
40-
builder.AddSerilog(Log.Logger, dispose: true);
51+
builder.AddSerilog(Serilog.Log.Logger, dispose: true);
4152
builder.SetMinimumLevel(MapVerbosityToMicrosoftLogLevel(verbosity));
4253
});
4354

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
11
#nullable enable
2+
GitVersion.Logging.LoggerExtensions
3+
static GitVersion.Logging.LoggerExtensions.IndentLog(this Microsoft.Extensions.Logging.ILogger! logger, string! operationDescription) -> System.IDisposable!
4+
static GitVersion.Logging.LoggerExtensions.Separator(this Microsoft.Extensions.Logging.ILogger! logger) -> void
5+
GitVersion.Logging.LoggingModule
6+
static GitVersion.Logging.LoggingModule.AddLogging(Microsoft.Extensions.DependencyInjection.IServiceCollection! services, GitVersion.Logging.Verbosity verbosity = GitVersion.Logging.Verbosity.Normal, bool addConsole = false, string? logFilePath = null, System.IO.Abstractions.IFileSystem? fileSystem = null) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!
7+
static GitVersion.Logging.LoggingModule.CreateLoggerConfiguration(GitVersion.Logging.Verbosity verbosity = GitVersion.Logging.Verbosity.Normal, bool addConsole = false, string? logFilePath = null, System.IO.Abstractions.IFileSystem? fileSystem = null) -> Serilog.LoggerConfiguration!

0 commit comments

Comments
 (0)