Files
mixtape/Finch/Logging/FinchLoggingModule.cs
T

39 lines
1.2 KiB
C#
Raw Normal View History

2026-03-25 15:38:53 +01:00
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
2026-04-07 14:23:29 +02:00
namespace Finch.Logging;
2026-03-25 15:38:53 +01:00
2026-04-07 14:23:29 +02:00
public class FinchLoggingModule : FinchModule
2026-03-25 15:38:53 +01:00
{
public override int Order { get; } = -100;
public override void ConfigureServices(IServiceCollection services, IConfiguration configuration)
{
services.AddHttpClient<AnalyticsController>();
services.AddOptions<AnalyticsOptions>().Bind(configuration.GetSection("Finch:Analytics"));
2026-03-25 15:38:53 +01:00
services.AddLogging(builder =>
{
// get seq configuration
2026-04-07 14:23:29 +02:00
IConfigurationSection seqConfig = configuration.GetSection("Finch:Seq");
FinchSeqOptions seqOptions = seqConfig.Get<FinchSeqOptions>() ?? new();
2026-03-25 15:38:53 +01:00
// default level
builder.SetMinimumLevel(seqOptions.MinimumLevel);
2026-04-07 14:23:29 +02:00
// apply log level overrides from finch
2026-03-25 15:38:53 +01:00
foreach (KeyValuePair<string, LogLevel> levelOverride in seqOptions.LevelOverrides)
{
builder.AddFilter(levelOverride.Key, levelOverride.Value);
}
// add optional seq sink
if (seqConfig.Exists() && seqOptions.ApiKey.HasValue())
2026-03-25 15:38:53 +01:00
{
builder.AddSeq(seqOptions.ServerUrl, seqOptions.ApiKey, seqOptions.Enrichers);
}
});
}
}