Libraries/src/Amazon.Lambda.Logging.AspNetCore/ILoggerBuilderExtensions.cs (51 lines of code) (raw):

using System; using System.Collections.Generic; using System.Text; using Microsoft.Extensions.Configuration; // Same namespace as ILoggingBuilder, to make these extensions appear // without the user needing to including our namespace first. namespace Microsoft.Extensions.Logging { /// <summary> /// ILoggingBuilder extensions /// </summary> public static class ILoggerBuilderExtensions { /// <summary> /// Adds a Lambda logger provider with default options. /// </summary> /// <param name="builder">ILoggingBuilder to add Lambda logger to.</param> /// <returns>Updated ILoggingBuilder.</returns> [CLSCompliant(false)] // https://github.com/aspnet/Logging/issues/500 public static ILoggingBuilder AddLambdaLogger(this ILoggingBuilder builder) { var options = new LambdaLoggerOptions(); return AddLambdaLogger(builder, options); } /// <summary> /// Adds a Lambda logger provider with specified options. /// </summary> /// <param name="builder">ILoggingBuilder to add Lambda logger to.</param> /// <param name="options">Lambda logging options.</param> /// <returns>Updated ILoggingBuilder.</returns> [CLSCompliant(false)] // https://github.com/aspnet/Logging/issues/500 public static ILoggingBuilder AddLambdaLogger(this ILoggingBuilder builder, LambdaLoggerOptions options) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } var provider = new LambdaILoggerProvider(options); builder.AddProvider(provider); return builder; } /// <summary> /// Adds a Lambda logger provider with options loaded from the specified subsection of the /// configuration section. /// </summary> /// <param name="builder">ILoggingBuilder to add Lambda logger to.</param> /// <param name="configuration">IConfiguration to use when construction logging options.</param> /// <param name="loggingSectionName">Name of the logging section with required settings.</param> /// <returns>Updated ILoggingBuilder.</returns> [CLSCompliant(false)] // https://github.com/aspnet/Logging/issues/500 public static ILoggingBuilder AddLambdaLogger(this ILoggingBuilder builder, IConfiguration configuration, string loggingSectionName) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } if (string.IsNullOrEmpty(loggingSectionName)) { throw new ArgumentNullException(nameof(loggingSectionName)); } var options = new LambdaLoggerOptions(configuration, loggingSectionName); var provider = new LambdaILoggerProvider(options); builder.AddProvider(provider); return builder; } } }