/// <summary> /// Build the Serilog instance. /// </summary> /// <param name="serilogOptions"><see cref="SerilogOptions" /></param> /// <param name="configure"></param> /// <returns></returns> public static ILogger Create(SerilogOptions serilogOptions, Action <LoggerSinkConfiguration> configure = null) { if (serilogOptions == null) { serilogOptions = new SerilogOptions(); } var configuration = new LoggerConfiguration().Configue(); if (!serilogOptions.LogMinLevel.HasValue) { serilogOptions.LogMinLevel = LogEventLevel.Debug; } configuration.ConfigueLevel(serilogOptions.LogMinLevel.Value); if (serilogOptions.Async) { configuration.WriteTo.Async(async => { Configue(async, serilogOptions, configure); }); } else { Configue(configuration.WriteTo, serilogOptions, configure); } if (serilogOptions.SourceContextFilterOptions != null) { configuration.ConfigueSourceContextFilter(serilogOptions.SourceContextFilterOptions); } return(configuration.CreateLogger()); }