You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.4 KiB
66 lines
2.4 KiB
1 year ago
|
using System.Diagnostics.CodeAnalysis;
|
||
|
using Microsoft.Extensions.Configuration;
|
||
|
using Microsoft.Extensions.DependencyInjection;
|
||
|
using Microsoft.Extensions.Logging;
|
||
|
using NLog;
|
||
|
using StabilityMatrix.Avalonia.Diagnostics.LogViewer.Core.Logging;
|
||
|
using StabilityMatrix.Avalonia.Diagnostics.LogViewer.Core.ViewModels;
|
||
|
using LogDataStore = StabilityMatrix.Avalonia.Diagnostics.LogViewer.Logging.LogDataStore;
|
||
|
using MsLogLevel = Microsoft.Extensions.Logging.LogLevel;
|
||
|
|
||
|
namespace StabilityMatrix.Avalonia.Diagnostics.LogViewer.Extensions;
|
||
|
|
||
|
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
|
||
|
public static class ServicesExtension
|
||
|
{
|
||
|
public static IServiceCollection AddLogViewer(this IServiceCollection services)
|
||
|
{
|
||
|
services.AddSingleton<ILogDataStore, LogDataStore>();
|
||
|
services.AddSingleton<LogViewerControlViewModel>();
|
||
|
|
||
|
return services;
|
||
|
}
|
||
|
|
||
|
public static IServiceCollection AddLogViewer(
|
||
|
this IServiceCollection services,
|
||
|
Action<DataStoreLoggerConfiguration> configure)
|
||
|
{
|
||
|
services.AddSingleton<ILogDataStore>(Core.Logging.LogDataStore.Instance);
|
||
|
services.AddSingleton<LogViewerControlViewModel>();
|
||
|
services.Configure(configure);
|
||
|
|
||
|
return services;
|
||
|
}
|
||
|
|
||
|
public static ILoggingBuilder AddNLogTargets(this ILoggingBuilder builder, IConfiguration config)
|
||
|
{
|
||
|
LogManager
|
||
|
.Setup()
|
||
|
// Register custom Target
|
||
|
.SetupExtensions(extensionBuilder =>
|
||
|
extensionBuilder.RegisterTarget<DataStoreLoggerTarget>("DataStoreLogger"));
|
||
|
|
||
|
/*builder
|
||
|
.ClearProviders()
|
||
|
.SetMinimumLevel(MsLogLevel.Trace)
|
||
|
// Load NLog settings from appsettings*.json
|
||
|
.AddNLog(config,
|
||
|
// custom options for capturing the EventId information
|
||
|
new NLogProviderOptions
|
||
|
{
|
||
|
// https://nlog-project.org/2021/08/25/nlog-5-0-preview1-ready.html#nlogextensionslogging-changes-capture-of-eventid
|
||
|
IgnoreEmptyEventId = false,
|
||
|
CaptureEventId = EventIdCaptureType.Legacy
|
||
|
});*/
|
||
|
|
||
|
return builder;
|
||
|
}
|
||
|
|
||
|
public static ILoggingBuilder AddNLogTargets(this ILoggingBuilder builder, IConfiguration config, Action<DataStoreLoggerConfiguration> configure)
|
||
|
{
|
||
|
builder.AddNLogTargets(config);
|
||
|
builder.Services.Configure(configure);
|
||
|
return builder;
|
||
|
}
|
||
|
}
|