public Logger CreateLogger()
{
if (_loggerCreated)
throw new InvalidOperationException("CreateLogger() was previously called and can only be called once.");
_loggerCreated = true;
Action dispose = () =>
{
foreach (var disposable in _logEventSinks.OfType<IDisposable>())
disposable.Dispose();
};
ILogEventSink sink = new SafeAggregateSink(_logEventSinks);
var auditing = _auditSinks.Any();
if (auditing)
sink = new AggregateSink(new[] { sink }.Concat(_auditSinks));
if (_filters.Any())
{
// A throwing filter could drop an auditable event, so exceptions in filters must be propagated
// if auditing is used.
sink = new FilteringSink(sink, _filters, auditing);
}
var converter = new PropertyValueConverter(_maximumDestructuringDepth, _additionalScalarTypes, _additionalDestructuringPolicies, auditing);
var processor = new MessageTemplateProcessor(converter);
ILogEventEnricher enricher;
switch (_enrichers.Count)
{
case 0:
// Should be a rare case, so no problem making that extra interface dispatch.
enricher = new EmptyEnricher();
break;
case 1:
enricher = _enrichers[0];
break;
default:
enricher = new SafeAggregateEnricher(_enrichers);
break;
}
LevelOverrideMap overrideMap = null;
if (_overrides.Count != 0)
{
overrideMap = new LevelOverrideMap(_overrides, _minimumLevel, _levelSwitch);
}
return _levelSwitch == null ?
new Logger(processor, _minimumLevel, sink, enricher, dispose, overrideMap) :
new Logger(processor, _levelSwitch, sink, enricher, dispose, overrideMap);
}
public Function() { var configuration = new ConfigurationBuilder() .AddEnvironmentVariables() .Build(); System.Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(configuration["Pipeline:ManualIntervention:Slack:WebhookUrl"])); webhookUrl = configuration["Pipeline:ManualIntervention:Slack:WebhookUrl"]; var services = new ServiceCollection(); services.AddLogging(); var serviceProvider = services.BuildServiceProvider(); var loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>(); var loggerConfig = new Serilog.LoggerConfiguration() #if DEBUG .MinimumLevel.Debug() #endif .Enrich.FromLogContext() .Enrich.WithProperty("Application", "CodePipeline.ManualIntervention.Slack") .WriteTo.Console(new JsonFormatter()); Serilog.Log.Logger = loggerConfig.CreateLogger(); loggerFactory.AddSerilog(); logger = serviceProvider.GetRequiredService <ILogger <Function> >(); }