/// <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
                    });
Esempio n. 4
0
 /// <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);
 }
Esempio n. 5
0
        /// <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
            }
        }
Esempio n. 7
0
 /// <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);
 }
Esempio n. 8
0
 /// <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);
 }
Esempio n. 9
0
 /// <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);
 }
Esempio n. 10
0
 /// <summary>
 /// Gets the specified named logger.
 /// </summary>
 public static Logger GetLogger(this ISetupBuilder setupBuilder, string name)
 {
     return(setupBuilder.LogFactory.GetLogger(name));
 }
Esempio n. 11
0
 public static Logger GetCurrentClassLogger(this ISetupBuilder setupBuilder)
 {
     return(setupBuilder.LogFactory.GetLogger(StackTraceUsageUtils.GetClassFullName()));
 }
Esempio n. 12
0
 /// <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);
 }
Esempio n. 13
0
 /// <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);
 }
Esempio n. 14
0
 /// <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);
 }
Esempio n. 15
0
 /// <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);
 }