/// <summary> /// Loads NLog LoggingConfiguration from appsettings.json from NLog-section /// </summary> public static ISetupBuilder LoadNLogConfigFromSection(this ISetupBuilder setupBuilder, Microsoft.Extensions.Configuration.IConfiguration configuration) { setupBuilder.SetupExtensions(s => s.RegisterConfigSettings(configuration)); var nlogConfig = configuration.GetSection("NLog"); if (nlogConfig != null && nlogConfig.GetChildren().Any()) { setupBuilder.LogFactory.Configuration = new NLogLoggingConfiguration(nlogConfig, setupBuilder.LogFactory); } return(setupBuilder); }
/// <summary> /// Convience method to register aspnet-layoutrenders in NLog.Web as one-liner before loading NLog.config /// </summary> /// <remarks> /// If not providing <paramref name="serviceProvider"/>, then output from aspnet-layoutrenderers will remain empty /// </remarks> public static ISetupBuilder RegisterNLogWeb(this ISetupBuilder setupBuilder, IConfiguration configuration = null, IServiceProvider serviceProvider = null) { setupBuilder.SetupExtensions(e => e.RegisterNLogWeb(serviceProvider)); if (configuration == null && serviceProvider != null) { configuration = serviceProvider.GetService(typeof(IConfiguration)) as IConfiguration; } if (configuration != null) { setupBuilder.SetupExtensions(e => e.RegisterConfigSettings(configuration)); } return(setupBuilder); }
public static ISetupBuilder ConfigDefaultLogging(this ISetupBuilder loggerConfiguration, string applicationName, bool noFile = false) { loggerConfiguration = loggerConfiguration.SetupExtensions(e => e.RegisterLayoutRenderer("event-type", typeof(EventTypeLayoutRenderer))); if (!noFile) { const string defaultFile = "default-file"; loggerConfiguration = loggerConfiguration.LoadConfiguration(b => { b.Configuration.AddTarget(new AsyncTargetWrapper(new FileTarget("actual-" + defaultFile) { Layout = new JsonLayout { Attributes = { new JsonAttribute("time", "${longdate}"), new JsonAttribute("level", "${level:upperCase=true}"), new JsonAttribute("application", applicationName), new JsonAttribute("eventType", "${event-type}"), new JsonAttribute("message", "${message}"), new JsonAttribute("Properties", new JsonLayout { ExcludeEmptyProperties = true, ExcludeProperties = new HashSet <string> { "time", "level", "eventType", "message" }, IncludeAllProperties = true }) } }, ArchiveAboveSize = 5_242_880, ConcurrentWrites = false, MaxArchiveFiles = 5, FileName = "Logs\\Log.log", ArchiveFileName = "Logs\\Log.{###}.log", ArchiveNumbering = ArchiveNumberingMode.Rolling, EnableArchiveFileCompression = true }) { Name = defaultFile });
/// <summary> /// Loads NLog LoggingConfiguration from appsettings.json from NLog-section /// </summary> public static ISetupBuilder LoadConfigurationFromSection(this ISetupBuilder setupBuilder, Microsoft.Extensions.Configuration.IConfiguration configuration, string configSection = "NLog") { setupBuilder.SetupExtensions(s => s.RegisterConfigSettings(configuration)); if (!string.IsNullOrEmpty(configSection)) { var nlogConfig = configuration.GetSection(configSection); if (nlogConfig?.GetChildren()?.Any() == true) { setupBuilder.LogFactory.Configuration = new NLogLoggingConfiguration(nlogConfig, setupBuilder.LogFactory); } else { Common.InternalLogger.Debug("Skip loading NLogLoggingConfiguration from empty config section: {0}", configSection); } } return(setupBuilder); }
/// <summary> /// Loads NLog config created by the method <paramref name="configBuilder"/> /// </summary> public static ISetupBuilder LoadConfiguration(this ISetupBuilder setupBuilder, Action <ISetupLoadConfigurationBuilder> configBuilder) { var config = setupBuilder.LogFactory._config; var setupConfig = new SetupLoadConfigurationBuilder(setupBuilder.LogFactory, config); configBuilder(setupConfig); var newConfig = setupConfig._configuration; bool configHasChanged = !ReferenceEquals(config, setupBuilder.LogFactory._config); if (ReferenceEquals(newConfig, setupBuilder.LogFactory._config)) { setupBuilder.LogFactory.ReconfigExistingLoggers(); } else if (!configHasChanged || !ReferenceEquals(config, newConfig)) { setupBuilder.LogFactory.Configuration = newConfig; } return(setupBuilder); }
/// <summary> /// Loads NLog LoggingConfiguration from appsettings.json from the NLog-section /// </summary> public static ISetupBuilder LoadConfigurationFromAppSettings(this ISetupBuilder setupBuilder, string basePath = null, string environment = null, string nlogConfigSection = "NLog", bool optional = true, bool reloadOnChange = false) { environment = environment ?? GetAspNetCoreEnvironment("DOTNET_ENVIRONMENT") ?? GetAspNetCoreEnvironment("ASPNETCORE_ENVIRONMENT") ?? "Production"; var builder = new ConfigurationBuilder() // Host Configuration .SetBasePath(basePath ?? Directory.GetCurrentDirectory()) .AddEnvironmentVariables(prefix: "ASPNETCORE_") .AddEnvironmentVariables(prefix: "DOTNET_") // App Configuration .AddJsonFile("appsettings.json", optional, reloadOnChange) .AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: reloadOnChange) .AddEnvironmentVariables(); var config = builder.Build(); if (!string.IsNullOrEmpty(nlogConfigSection) && config.GetSection(nlogConfigSection)?.GetChildren().Any() == true) { return(setupBuilder.SetupExtensions(e => e.RegisterNLogWeb()).LoadConfigurationFromSection(config, nlogConfigSection)); } else { setupBuilder.SetupExtensions(e => e.RegisterNLogWeb().RegisterConfigSettings(config)); if (!string.IsNullOrEmpty(basePath)) { if (!string.IsNullOrEmpty(environment)) { setupBuilder.LoadConfigurationFromFile(Path.Combine(basePath, $"nlog.{environment}.config"), optional: true); } setupBuilder.LoadConfigurationFromFile(Path.Combine(basePath, "nlog.config"), optional: true); } else if (!string.IsNullOrEmpty(environment)) { setupBuilder.LoadConfigurationFromFile($"nlog.{environment}.config", optional: true); } return(setupBuilder.LoadConfigurationFromFile()); // No effect, if config already loaded } }
/// <summary> /// Configures serialization and transformation of LogEvents /// </summary> public static ISetupBuilder SetupSerialization(this ISetupBuilder setupBuilder, Action <ISetupSerializationBuilder> serializationBuilder) { serializationBuilder(new SetupSerializationBuilder(setupBuilder.LogFactory)); return(setupBuilder); }
/// <summary> /// Configures the output of NLog <see cref="Common.InternalLogger"/> for diagnostics / troubleshooting /// </summary> public static ISetupBuilder SetupInternalLogger(this ISetupBuilder setupBuilder, Action <ISetupInternalLoggerBuilder> internalLoggerBuilder) { internalLoggerBuilder(new SetupInternalLoggerBuilder(setupBuilder.LogFactory)); return(setupBuilder); }
/// <summary> /// Configures loading of NLog extensions for Targets and LayoutRenderers /// </summary> public static ISetupBuilder SetupExtensions(this ISetupBuilder setupBuilder, Action <ISetupExtensionsBuilder> extensionsBuilder) { extensionsBuilder(new SetupExtensionsBuilder(setupBuilder.LogFactory)); return(setupBuilder); }
/// <summary> /// Gets the specified named logger. /// </summary> public static Logger GetLogger(this ISetupBuilder setupBuilder, string name) { return(setupBuilder.LogFactory.GetLogger(name)); }
public static Logger GetCurrentClassLogger(this ISetupBuilder setupBuilder) { return(setupBuilder.LogFactory.GetLogger(StackTraceUsageUtils.GetClassFullName())); }
/// <summary> /// Register the NLog.Web LayoutRenderers before loading NLog config /// </summary> public static ISetupBuilder RegisterNLogWeb(this ISetupBuilder setupBuilder) { setupBuilder.SetupExtensions(e => e.RegisterNLogWeb()); return(setupBuilder); }
/// <summary> /// Loads NLog config from XML in <paramref name="configXml"/> /// </summary> public static ISetupBuilder LoadConfigurationFromXml(this ISetupBuilder setupBuilder, string configXml) { setupBuilder.LogFactory.Configuration = XmlLoggingConfiguration.CreateFromXmlString(configXml, setupBuilder.LogFactory); return(setupBuilder); }
/// <summary> /// Loads NLog config from filename <paramref name="configFile"/> if provided, else fallback to scanning for NLog.config /// </summary> public static ISetupBuilder LoadConfigurationFromFile(this ISetupBuilder setupBuilder, string configFile = null, bool optional = true) { setupBuilder.LogFactory.LoadConfiguration(configFile, optional); return(setupBuilder); }
/// <summary> /// Loads NLog config provided in <paramref name="loggingConfiguration"/> /// </summary> public static ISetupBuilder LoadConfiguration(this ISetupBuilder setupBuilder, LoggingConfiguration loggingConfiguration) { setupBuilder.LogFactory.Configuration = loggingConfiguration; return(setupBuilder); }