/// <summary> /// Updates a logging configuration for Azure compatability /// </summary> /// <param name="config"></param> public static void UpdateConfigForCloud(LoggingConfiguration config) { // Set up the azure role name variables // Add Azure role infomration to log4net properties var role = ConfigurationHelper.RoleName; var instance = ConfigurationHelper.InstanceName; // Update the file targets with the proper log storage directory base foreach (var ft in config.AllTargets.OfType <FileTarget>()) { var name = ft.Name.Replace("_wrapped", ""); // With Azure SDK 2.5 we can use absolute paths, not relative paths //var archiveFileName = String.Format("{0}Log_{1}_{2}_{3}_{{#####}}", // name, role, instance, @"${shortdate}.log"); //ft.ArchiveFileName = Path.Combine(archiveDirPath, archiveFileName); //var fileName = String.Format("{0}Log_{1}_{2}.log", // name, role, instance); //ft.FileName = Path.Combine(logDirPath, fileName); // Update the file targets with the role instance names for layout if (ft.Layout is CsvLayout) { var csvLayout = ft.Layout as CsvLayout; var roleCol = csvLayout.Columns.FirstOrDefault(e => e.Name == "role"); if (roleCol != null) { roleCol.Layout = role; } var instanceCol = csvLayout.Columns.FirstOrDefault(e => e.Name == "instance"); if (instanceCol != null) { instanceCol.Layout = instance; } } } // Add the trace listener when running in emulator if (RoleEnvironment.IsAvailable && RoleEnvironment.IsEmulated) { var trace = new global::NLog.Targets.TraceTarget(); trace.Name = "emulator_trace"; config.AddTarget("emulator_trace", trace); foreach (var rule in config.LoggingRules) { rule.Targets.Add(trace); } } }
/// <summary> /// Updates a logging configuration for Azure compatability /// </summary> /// <param name="config"></param> public static void UpdateConfigForCloud(LoggingConfiguration config) { // Set up the azure role name variables // Add Azure role infomration to log4net properties var role = ConfigurationHelper.RoleName; var instance = ConfigurationHelper.InstanceName; // Update the file targets with the proper log storage directory base foreach (var ft in config.AllTargets.OfType<FileTarget>()) { var name = ft.Name.Replace("_wrapped", ""); // With Azure SDK 2.5 we can use absolute paths, not relative paths //var archiveFileName = String.Format("{0}Log_{1}_{2}_{3}_{{#####}}", // name, role, instance, @"${shortdate}.log"); //ft.ArchiveFileName = Path.Combine(archiveDirPath, archiveFileName); //var fileName = String.Format("{0}Log_{1}_{2}.log", // name, role, instance); //ft.FileName = Path.Combine(logDirPath, fileName); // Update the file targets with the role instance names for layout if (ft.Layout is CsvLayout) { var csvLayout = ft.Layout as CsvLayout; var roleCol = csvLayout.Columns.FirstOrDefault(e => e.Name == "role"); if (roleCol != null) roleCol.Layout = role; var instanceCol = csvLayout.Columns.FirstOrDefault(e => e.Name == "instance"); if (instanceCol != null) instanceCol.Layout = instance; } } // Add the trace listener when running in emulator if (RoleEnvironment.IsAvailable && RoleEnvironment.IsEmulated) { var trace = new global::NLog.Targets.TraceTarget(); trace.Name = "emulator_trace"; config.AddTarget("emulator_trace", trace); foreach (var rule in config.LoggingRules) { rule.Targets.Add(trace); } } }