Skip to content

Commit

Permalink
FileTarget - Marked NetworkWrites as obsolete, and replaced by KeepFi…
Browse files Browse the repository at this point in the history
…leOpen=false
  • Loading branch information
snakefoot committed Nov 22, 2023
1 parent 87028f1 commit bb186c5
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 40 deletions.
10 changes: 4 additions & 6 deletions src/NLog/Targets/FileTarget.cs
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,9 @@ public bool ConcurrentWrites
/// This effectively prevents files from being kept open.
/// </remarks>
/// <docgen category='Performance Tuning Options' order='50' />
public bool NetworkWrites { get; set; }
[Obsolete("Instead use KeepFileOpen = false. Marked obsolete with NLog v5.3")]
[EditorBrowsable(EditorBrowsableState.Never)]
public bool NetworkWrites { get => !KeepFileOpen; set => KeepFileOpen = !value; }

/// <summary>
/// Gets or sets a value indicating whether to write BOM (byte order mark) in created files.
Expand Down Expand Up @@ -858,10 +860,6 @@ private IFileAppenderFactory GetFileAppenderFactory()
{
return RetryingMultiProcessFileAppender.TheFactory;
}
else if (NetworkWrites)
{
return RetryingMultiProcessFileAppender.TheFactory;
}
else if (ConcurrentWrites)
{
#if SupportsMutex
Expand Down Expand Up @@ -898,7 +896,7 @@ private IFileAppenderFactory GetFileAppenderFactory()

private bool IsArchivingEnabled => ArchiveAboveSize != ArchiveAboveSizeDisabled || ArchiveEvery != FileArchivePeriod.None;

private bool IsSimpleKeepFileOpen => KeepFileOpen && !ConcurrentWrites && !NetworkWrites && !ReplaceFileContentsOnEachWrite;
private bool IsSimpleKeepFileOpen => KeepFileOpen && !ConcurrentWrites && !ReplaceFileContentsOnEachWrite;

private bool EnableFileDeleteSimpleMonitor => EnableFileDelete && IsSimpleKeepFileOpen
#if !NETSTANDARD
Expand Down
57 changes: 23 additions & 34 deletions tests/NLog.UnitTests/Targets/FileTargetTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,21 +61,20 @@ public static IEnumerable<object[]> SimpleFileTest_TestParameters
return
from concurrentWrites in booleanValues
from keepFileOpen in booleanValues
from networkWrites in booleanValues
from forceMutexConcurrentWrites in booleanValues
where UniqueBaseAppender(concurrentWrites, keepFileOpen, networkWrites, forceMutexConcurrentWrites)
where UniqueBaseAppender(concurrentWrites, keepFileOpen, forceMutexConcurrentWrites)
from forceManaged in booleanValues
select new object[] { concurrentWrites, keepFileOpen, networkWrites, forceManaged, forceMutexConcurrentWrites };
select new object[] { concurrentWrites, keepFileOpen, forceManaged, forceMutexConcurrentWrites };
}
}

private static bool UniqueBaseAppender(bool concurrentWrites, bool keepFileOpen, bool networkWrites, bool forceMutexConcurrentWrites)
private static bool UniqueBaseAppender(bool concurrentWrites, bool keepFileOpen, bool forceMutexConcurrentWrites)
{
if (networkWrites && !keepFileOpen && !concurrentWrites && !forceMutexConcurrentWrites)
if (!keepFileOpen && !concurrentWrites && !forceMutexConcurrentWrites)
return true;
if (concurrentWrites && !networkWrites && !keepFileOpen && !forceMutexConcurrentWrites)
if (!keepFileOpen && concurrentWrites && !forceMutexConcurrentWrites)
return true;
if (keepFileOpen && !networkWrites && !forceMutexConcurrentWrites)
if (keepFileOpen && !forceMutexConcurrentWrites)
return true;
return false;
}
Expand Down Expand Up @@ -107,7 +106,7 @@ public void SetupBuilder_WriteToFile()

[Theory]
[MemberData(nameof(SimpleFileTest_TestParameters))]
public void SimpleFileTest(bool concurrentWrites, bool keepFileOpen, bool networkWrites, bool forceManaged, bool forceMutexConcurrentWrites)
public void SimpleFileTest(bool concurrentWrites, bool keepFileOpen, bool forceManaged, bool forceMutexConcurrentWrites)
{
var logFile = Path.GetTempFileName();
try
Expand All @@ -120,7 +119,6 @@ public void SimpleFileTest(bool concurrentWrites, bool keepFileOpen, bool networ
OpenFileCacheTimeout = 0,
ConcurrentWrites = concurrentWrites,
KeepFileOpen = keepFileOpen,
NetworkWrites = networkWrites,
ForceManaged = forceManaged,
ForceMutexConcurrentWrites = forceMutexConcurrentWrites,
};
Expand All @@ -144,16 +142,16 @@ public void SimpleFileTest(bool concurrentWrites, bool keepFileOpen, bool networ

[Theory]
[MemberData(nameof(SimpleFileTest_TestParameters))]
public void SimpleFileDeleteTest(bool concurrentWrites, bool keepFileOpen, bool networkWrites, bool forceManaged, bool forceMutexConcurrentWrites)
public void SimpleFileDeleteTest(bool concurrentWrites, bool keepFileOpen, bool forceManaged, bool forceMutexConcurrentWrites)
{
bool isSimpleKeepFileOpen = keepFileOpen && !networkWrites && !concurrentWrites
bool isSimpleKeepFileOpen = keepFileOpen && !concurrentWrites
#if !NETSTANDARD && !MONO
&& IsLinux()
#endif
;

#if MONO
if (IsLinux() && concurrentWrites && keepFileOpen && !networkWrites)
if (IsLinux() && concurrentWrites && keepFileOpen)
{
Console.WriteLine("[SKIP] FileTargetTests.SimpleFileDeleteTest Not supported on MONO on Travis, because of FileSystemWatcher not working");
return;
Expand Down Expand Up @@ -181,7 +179,6 @@ public void SimpleFileDeleteTest(bool concurrentWrites, bool keepFileOpen, bool
EnableFileDelete = true,
ConcurrentWrites = concurrentWrites,
KeepFileOpen = keepFileOpen,
NetworkWrites = networkWrites,
ForceManaged = forceManaged,
ForceMutexConcurrentWrites = forceMutexConcurrentWrites,
ArchiveAboveSize = archiveSameFolder ? 1000000 : 0,
Expand All @@ -198,7 +195,7 @@ public void SimpleFileDeleteTest(bool concurrentWrites, bool keepFileOpen, bool
if (isSimpleKeepFileOpen)
Thread.Sleep(1500); // Ensure EnableFileDeleteSimpleMonitor will trigger
else if (keepFileOpen && !networkWrites)
else if (keepFileOpen)
Thread.Sleep(150); // Allow AutoClose-Timer-Thread to react (FileWatcher schedules timer after 50 msec)
logger.Info("bbb");
Expand Down Expand Up @@ -328,7 +325,7 @@ public void SimpleFileTestWriteBom()
/// </summary>
[Theory]
[MemberData(nameof(SimpleFileTest_TestParameters))]
public void NonExistingDriveShouldNotDelayMuch(bool concurrentWrites, bool keepFileOpen, bool networkWrites, bool forceManaged, bool forceMutexConcurrentWrites)
public void NonExistingDriveShouldNotDelayMuch(bool concurrentWrites, bool keepFileOpen, bool forceManaged, bool forceMutexConcurrentWrites)
{
var nonExistingDrive = GetFirstNonExistingDriveWindows();

Expand All @@ -346,7 +343,6 @@ public void NonExistingDriveShouldNotDelayMuch(bool concurrentWrites, bool keepF
Layout = "${level} ${message}",
ConcurrentWrites = concurrentWrites,
KeepFileOpen = keepFileOpen,
NetworkWrites = networkWrites,
ForceManaged = forceManaged,
ForceMutexConcurrentWrites = forceMutexConcurrentWrites,
};
Expand Down Expand Up @@ -1543,18 +1539,17 @@ public static IEnumerable<object[]> DateArchive_UsesDateFromCurrentTimeSource_Te
from includeDateInLogFilePath in booleanValues
from concurrentWrites in booleanValues
from keepFileOpen in booleanValues
from networkWrites in booleanValues
from forceMutexConcurrentWrites in booleanValues
where UniqueBaseAppender(concurrentWrites, keepFileOpen, networkWrites, forceMutexConcurrentWrites)
where UniqueBaseAppender(concurrentWrites, keepFileOpen, forceMutexConcurrentWrites)
from includeSequenceInArchive in booleanValues
from forceManaged in booleanValues
select new object[] { timeKind, includeDateInLogFilePath, concurrentWrites, keepFileOpen, networkWrites, includeSequenceInArchive, forceManaged, forceMutexConcurrentWrites, maxArchiveDays };
select new object[] { timeKind, includeDateInLogFilePath, concurrentWrites, keepFileOpen, includeSequenceInArchive, forceManaged, forceMutexConcurrentWrites, maxArchiveDays };
}
}

[Theory]
[MemberData(nameof(DateArchive_UsesDateFromCurrentTimeSource_TestParameters))]
public void DateArchive_UsesDateFromCurrentTimeSource(DateTimeKind timeKind, bool includeDateInLogFilePath, bool concurrentWrites, bool keepFileOpen, bool networkWrites, bool includeSequenceInArchive, bool forceManaged, bool forceMutexConcurrentWrites, bool maxArhiveDays)
public void DateArchive_UsesDateFromCurrentTimeSource(DateTimeKind timeKind, bool includeDateInLogFilePath, bool concurrentWrites, bool keepFileOpen, bool includeSequenceInArchive, bool forceManaged, bool forceMutexConcurrentWrites, bool maxArhiveDays)
{
#if NETSTANDARD || MONO
if (IsLinux())
Expand Down Expand Up @@ -1591,7 +1586,6 @@ public void DateArchive_UsesDateFromCurrentTimeSource(DateTimeKind timeKind, boo
MaxArchiveDays = maxArhiveDays ? maxArchiveFiles : 0,
ConcurrentWrites = concurrentWrites,
KeepFileOpen = keepFileOpen,
NetworkWrites = networkWrites,
ForceManaged = forceManaged,
ForceMutexConcurrentWrites = forceMutexConcurrentWrites,
Header = "header",
Expand Down Expand Up @@ -1690,7 +1684,7 @@ public void DateArchive_UsesDateFromCurrentTimeSource(DateTimeKind timeKind, boo
public void DateArchive_UsesDateFromCurrentTimeSource_MaxArchiveDays(DateTimeKind timeKind, bool includeDateInLogFilePath, bool includeSequenceInArchive)
{
const bool MaxArchiveDays = true;
DateArchive_UsesDateFromCurrentTimeSource(timeKind, includeDateInLogFilePath, false, false, false, includeSequenceInArchive, false, false, MaxArchiveDays);
DateArchive_UsesDateFromCurrentTimeSource(timeKind, includeDateInLogFilePath, false, false, includeSequenceInArchive, false, false, MaxArchiveDays);
}

public static IEnumerable<object[]> DateArchive_ArchiveOnceOnly_TestParameters
Expand All @@ -1701,19 +1695,18 @@ public static IEnumerable<object[]> DateArchive_ArchiveOnceOnly_TestParameters
return
from concurrentWrites in booleanValues
from keepFileOpen in booleanValues
from networkWrites in booleanValues
from forceMutexConcurrentWrites in booleanValues
where UniqueBaseAppender(concurrentWrites, keepFileOpen, networkWrites, forceMutexConcurrentWrites)
where UniqueBaseAppender(concurrentWrites, keepFileOpen, forceMutexConcurrentWrites)
from includeDateInLogFilePath in booleanValues
from includeSequenceInArchive in booleanValues
from forceManaged in booleanValues
select new object[] { concurrentWrites, keepFileOpen, networkWrites, includeDateInLogFilePath, includeSequenceInArchive, forceManaged, forceMutexConcurrentWrites };
select new object[] { concurrentWrites, keepFileOpen, includeDateInLogFilePath, includeSequenceInArchive, forceManaged, forceMutexConcurrentWrites };
}
}

[Theory]
[MemberData(nameof(DateArchive_ArchiveOnceOnly_TestParameters))]
public void DateArchive_ArchiveOnceOnly(bool concurrentWrites, bool keepFileOpen, bool networkWrites, bool dateInLogFilePath, bool includeSequenceInArchive, bool forceManaged, bool forceMutexConcurrentWrites)
public void DateArchive_ArchiveOnceOnly(bool concurrentWrites, bool keepFileOpen, bool dateInLogFilePath, bool includeSequenceInArchive, bool forceManaged, bool forceMutexConcurrentWrites)
{
var tempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
var logFile = Path.Combine(tempDir, dateInLogFilePath ? "file_${shortdate}.txt" : "file.txt");
Expand Down Expand Up @@ -1743,7 +1736,6 @@ public void DateArchive_ArchiveOnceOnly(bool concurrentWrites, bool keepFileOpen
Layout = "${message}",
ConcurrentWrites = concurrentWrites,
KeepFileOpen = keepFileOpen,
NetworkWrites = networkWrites,
ForceManaged = forceManaged,
ForceMutexConcurrentWrites = forceMutexConcurrentWrites,
};
Expand Down Expand Up @@ -1867,22 +1859,21 @@ public static IEnumerable<object[]> DateArchive_AllLoggersTransferToCurrentLogFi
return
from concurrentWrites in booleanValues
from keepFileOpen in booleanValues
from networkWrites in booleanValues
from forceMutexConcurrentWrites in booleanValues
where UniqueBaseAppender(concurrentWrites, keepFileOpen, networkWrites, forceMutexConcurrentWrites)
where UniqueBaseAppender(concurrentWrites, keepFileOpen, forceMutexConcurrentWrites)
from includeDateInLogFilePath in booleanValues
from includeSequenceInArchive in booleanValues
from enableArchiveCompression in booleanValues
from forceManaged in booleanValues
select new object[] { concurrentWrites, keepFileOpen, networkWrites, includeDateInLogFilePath, includeSequenceInArchive, enableArchiveCompression, forceManaged, forceMutexConcurrentWrites };
select new object[] { concurrentWrites, keepFileOpen, includeDateInLogFilePath, includeSequenceInArchive, enableArchiveCompression, forceManaged, forceMutexConcurrentWrites };
}
}

[Theory]
[MemberData(nameof(DateArchive_AllLoggersTransferToCurrentLogFile_TestParameters))]
public void DateArchive_AllLoggersTransferToCurrentLogFile(bool concurrentWrites, bool keepFileOpen, bool networkWrites, bool includeDateInLogFilePath, bool includeSequenceInArchive, bool enableArchiveCompression, bool forceManaged, bool forceMutexConcurrentWrites)
public void DateArchive_AllLoggersTransferToCurrentLogFile(bool concurrentWrites, bool keepFileOpen, bool includeDateInLogFilePath, bool includeSequenceInArchive, bool enableArchiveCompression, bool forceManaged, bool forceMutexConcurrentWrites)
{
if (keepFileOpen && !networkWrites && !concurrentWrites)
if (keepFileOpen && !concurrentWrites)
return; // This combination do not support two local FileTargets to the same file

#if NET35 || NET40
Expand Down Expand Up @@ -1932,7 +1923,6 @@ public void DateArchive_AllLoggersTransferToCurrentLogFile(bool concurrentWrites
Layout = "${message}",
ConcurrentWrites = concurrentWrites,
KeepFileOpen = keepFileOpen,
NetworkWrites = networkWrites,
ForceManaged = forceManaged,
ForceMutexConcurrentWrites = forceMutexConcurrentWrites,
};
Expand All @@ -1951,7 +1941,6 @@ public void DateArchive_AllLoggersTransferToCurrentLogFile(bool concurrentWrites
Layout = "${message}",
ConcurrentWrites = concurrentWrites,
KeepFileOpen = keepFileOpen,
NetworkWrites = networkWrites,
ForceManaged = forceManaged,
ForceMutexConcurrentWrites = forceMutexConcurrentWrites,
};
Expand Down

0 comments on commit bb186c5

Please sign in to comment.