-
Notifications
You must be signed in to change notification settings - Fork 4.5k
/
EventLoggerFactoryExtensions.cs
97 lines (83 loc) · 4.72 KB
/
EventLoggerFactoryExtensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
using System.ComponentModel;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Logging.EventLog;
namespace Microsoft.Extensions.Logging
{
/// <summary>
/// Extension methods for the <see cref="ILoggerFactory"/> class.
/// </summary>
public static class EventLoggerFactoryExtensions
{
/// <summary>
/// Adds an event logger. Use <paramref name="settings"/> to enable logging for specific <see cref="LogLevel"/>s.
/// </summary>
/// <param name="factory">The extension method argument.</param>
/// <param name="settings">The <see cref="EventLogSettings"/>.</param>
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This method is retained only for compatibility. The recommended alternative is AddEventLog(this ILoggingBuilder builder).", error: true)]
public static ILoggerFactory AddEventLog(this ILoggerFactory factory, EventLog.EventLogSettings settings)
{
ThrowHelper.ThrowIfNull(factory);
ThrowHelper.ThrowIfNull(settings);
factory.AddProvider(new EventLogLoggerProvider(settings));
return factory;
}
/// <summary>
/// Adds an event logger that is enabled for <see cref="LogLevel"/>s of minLevel or higher.
/// </summary>
/// <param name="factory">The extension method argument.</param>
/// <param name="minLevel">The minimum <see cref="LogLevel"/> to be logged</param>
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This method is retained only for compatibility. The recommended alternative is AddEventLog(this ILoggingBuilder builder).", error: true)]
public static ILoggerFactory AddEventLog(this ILoggerFactory factory, LogLevel minLevel) =>
AddEventLog(factory, new EventLogSettings() { Filter = (_, logLevel) => logLevel >= minLevel });
/// <summary>
/// Adds an event logger that is enabled for <see cref="LogLevel"/>.Information or higher.
/// </summary>
/// <param name="factory">The extension method argument.</param>
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This method is retained only for compatibility. The recommended alternative is AddEventLog(this ILoggingBuilder builder).", error: true)]
public static ILoggerFactory AddEventLog(this ILoggerFactory factory) => AddEventLog(factory, LogLevel.Information);
/// <summary>
/// Adds an event logger named 'EventLog' to the factory.
/// </summary>
/// <param name="builder">The extension method argument.</param>
/// <returns>The <see cref="ILoggingBuilder"/> so that additional calls can be chained.</returns>
public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder)
{
ThrowHelper.ThrowIfNull(builder);
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ILoggerProvider, EventLogLoggerProvider>());
return builder;
}
/// <summary>
/// Adds an event logger. Use <paramref name="settings"/> to enable logging for specific <see cref="LogLevel"/>s.
/// </summary>
/// <param name="builder">The extension method argument.</param>
/// <param name="settings">The <see cref="EventLogSettings"/>.</param>
/// <returns>The <see cref="ILoggingBuilder"/> so that additional calls can be chained.</returns>
public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder, EventLogSettings settings)
{
ThrowHelper.ThrowIfNull(builder);
ThrowHelper.ThrowIfNull(settings);
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ILoggerProvider>(new EventLogLoggerProvider(settings)));
return builder;
}
/// <summary>
/// Adds an event logger. Use <paramref name="configure"/> to enable logging for specific <see cref="LogLevel"/>s.
/// </summary>
/// <param name="builder">The extension method argument.</param>
/// <param name="configure">A delegate to configure the <see cref="EventLogSettings"/>.</param>
/// <returns>The <see cref="ILoggingBuilder"/> so that additional calls can be chained.</returns>
public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder, Action<EventLogSettings> configure)
{
ThrowHelper.ThrowIfNull(configure);
builder.AddEventLog();
builder.Services.Configure(configure);
return builder;
}
}
}