From 22e77d9595c21699bab07969a6931982de986689 Mon Sep 17 00:00:00 2001 From: Rolf Kristensen Date: Fri, 31 Jan 2025 18:56:08 +0100 Subject: [PATCH] FileTarget - Introduced WriteToFile without concurrentWrites --- src/NLog/Config/SimpleConfigurator.cs | 4 +- src/NLog/SetupLoadConfigurationExtensions.cs | 45 ++++++++++++++++++-- 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/NLog/Config/SimpleConfigurator.cs b/src/NLog/Config/SimpleConfigurator.cs index 4b54652fba..039bb0479d 100644 --- a/src/NLog/Config/SimpleConfigurator.cs +++ b/src/NLog/Config/SimpleConfigurator.cs @@ -116,7 +116,7 @@ public static void ConfigureForTargetLogging(Target target, LogLevel minLevel) } /// - /// Obsolete and replaced by and with NLog v5.2. + /// Obsolete and replaced by and with NLog v5.2. /// /// Configures NLog for file logging so that all messages above and including /// the level are written to the specified file. @@ -130,7 +130,7 @@ public static void ConfigureForFileLogging(string fileName) } /// - /// Obsolete and replaced by and with NLog v5.2. + /// Obsolete and replaced by and with NLog v5.2. /// /// Configures NLog for file logging so that all messages above and including /// the specified level are written to the specified file. diff --git a/src/NLog/SetupLoadConfigurationExtensions.cs b/src/NLog/SetupLoadConfigurationExtensions.cs index 179b689467..0cc2b92665 100644 --- a/src/NLog/SetupLoadConfigurationExtensions.cs +++ b/src/NLog/SetupLoadConfigurationExtensions.cs @@ -563,6 +563,40 @@ public static void WriteToDebugConditional(this ISetupConfigurationTargetBuilder configBuilder.WriteToDebug(layout); } + /// + /// Write to + /// + /// Fluent interface parameter. + /// + /// Override the default Layout for output + /// Override the default Encoding for output (Default = UTF8) + /// Override the default line ending characters (Ex. without CR) + /// Keep log file open instead of opening and closing it on each logging event + /// Size in bytes where log files will be automatically archived. + /// Maximum number of archive files that should be kept. + /// Maximum days of archive files that should be kept. + public static ISetupConfigurationTargetBuilder WriteToFile(this ISetupConfigurationTargetBuilder configBuilder, Layout fileName, Layout layout = null, System.Text.Encoding encoding = null, LineEndingMode lineEnding = null, bool keepFileOpen = true, long archiveAboveSize = -1, int maxArchiveFiles = -1, int maxArchiveDays = -1) + { + Guard.ThrowIfNull(fileName); + + var fileTarget = new FileTarget(); + fileTarget.FileName = fileName; + fileTarget.KeepFileOpen = keepFileOpen; + if (layout != null) + fileTarget.Layout = layout; + if (encoding != null) + fileTarget.Encoding = encoding; + if (lineEnding != null) + fileTarget.LineEnding = lineEnding; + if (archiveAboveSize > 0) + fileTarget.ArchiveAboveSize = archiveAboveSize; + if (maxArchiveFiles >= 0) + fileTarget.MaxArchiveFiles = maxArchiveFiles; + if (maxArchiveDays > 0) + fileTarget.MaxArchiveDays = maxArchiveDays; + return configBuilder.WriteTo(fileTarget); + } + /// /// Write to /// @@ -576,7 +610,7 @@ public static void WriteToDebugConditional(this ISetupConfigurationTargetBuilder /// Size in bytes where log files will be automatically archived. /// Maximum number of archive files that should be kept. /// Maximum days of archive files that should be kept. - public static ISetupConfigurationTargetBuilder WriteToFile(this ISetupConfigurationTargetBuilder configBuilder, Layout fileName, Layout layout = null, System.Text.Encoding encoding = null, LineEndingMode lineEnding = null, bool keepFileOpen = true, bool concurrentWrites = false, long archiveAboveSize = 0, int maxArchiveFiles = 0, int maxArchiveDays = 0) + public static ISetupConfigurationTargetBuilder WriteToFile(this ISetupConfigurationTargetBuilder configBuilder, Layout fileName, Layout layout, System.Text.Encoding encoding, LineEndingMode lineEnding, bool keepFileOpen, bool concurrentWrites, long archiveAboveSize = -1, int maxArchiveFiles = -1, int maxArchiveDays = -1) { Guard.ThrowIfNull(fileName); @@ -590,9 +624,12 @@ public static ISetupConfigurationTargetBuilder WriteToFile(this ISetupConfigurat fileTarget.LineEnding = lineEnding; fileTarget.KeepFileOpen = keepFileOpen; fileTarget.ConcurrentWrites = concurrentWrites; - fileTarget.ArchiveAboveSize = archiveAboveSize; - fileTarget.MaxArchiveFiles = maxArchiveFiles; - fileTarget.MaxArchiveDays = maxArchiveDays; + if (archiveAboveSize > 0) + fileTarget.ArchiveAboveSize = archiveAboveSize; + if (maxArchiveFiles >= 0) + fileTarget.MaxArchiveFiles = maxArchiveFiles; + if (maxArchiveDays > 0) + fileTarget.MaxArchiveDays = maxArchiveDays; return configBuilder.WriteTo(fileTarget); }