Skip to content

Commit 94cdd4a

Browse files
authored
FileTarget - Extend InternalLogger output with archive cleanup reason (#5980)
1 parent 13018d2 commit 94cdd4a

File tree

4 files changed

+31
-23
lines changed

4 files changed

+31
-23
lines changed

src/NLog/Targets/FileArchiveHandlers/BaseFileArchiveHandler.cs

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -71,29 +71,36 @@ protected bool DeleteOldFilesBeforeArchive(string fileDirectory, string fileWild
7171

7272
var directoryInfo = new DirectoryInfo(fileDirectory);
7373
if (!directoryInfo.Exists)
74+
{
75+
InternalLogger.Debug("{0}: Archive Cleanup found no files matching wildcard {1} in directory: {2}", _fileTarget, fileWildcard, fileDirectory);
7476
return false;
77+
}
7578

7679
var fileInfos = directoryInfo.GetFiles(fileWildcard);
7780
InternalLogger.Debug("{0}: Archive Cleanup found {1} files matching wildcard {2} in directory: {3}", _fileTarget, fileInfos.Length, fileWildcard, fileDirectory);
78-
if (fileInfos.Length != 0)
79-
{
80-
int fileWildcardStartIndex = fileWildcard.IndexOf('*');
81-
int fileWildcardEndIndex = fileWildcard.Length - fileWildcardStartIndex;
82-
var maxArchiveFiles = _fileTarget.MaxArchiveFiles;
83-
if (initialFileOpen && (!_fileTarget.ArchiveOldFileOnStartup || _fileTarget.DeleteOldFileOnStartup))
84-
maxArchiveFiles = _fileTarget.DeleteOldFileOnStartup ? 0 : maxArchiveFiles;
85-
else if (maxArchiveFiles > 0)
86-
maxArchiveFiles -= 1;
87-
88-
bool oldFilesDeleted = false;
89-
foreach (var cleanupFileInfo in FileInfoDateTime.CleanupFiles(fileInfos, maxArchiveFiles, _fileTarget.MaxArchiveDays, fileWildcardStartIndex, fileWildcardEndIndex, excludeFileName, wildCardContainsSeqNo))
90-
{
91-
oldFilesDeleted = true;
92-
DeleteOldArchiveFile(cleanupFileInfo.FullName);
93-
}
81+
if (fileInfos.Length == 0)
82+
return false;
83+
84+
int fileWildcardStartIndex = fileWildcard.IndexOf('*');
85+
int fileWildcardEndIndex = fileWildcard.Length - fileWildcardStartIndex;
86+
var maxArchiveFiles = _fileTarget.MaxArchiveFiles;
87+
if (initialFileOpen && (!_fileTarget.ArchiveOldFileOnStartup || _fileTarget.DeleteOldFileOnStartup))
88+
maxArchiveFiles = _fileTarget.DeleteOldFileOnStartup ? 0 : maxArchiveFiles;
89+
else if (maxArchiveFiles > 0)
90+
maxArchiveFiles -= 1;
91+
92+
var archiveCleanupReason = (_fileTarget.MaxArchiveFiles < 0 && _fileTarget.MaxArchiveDays > 0) ? $"MaxArchiveDays={_fileTarget.MaxArchiveDays}" : $"MaxArchiveFiles={_fileTarget.MaxArchiveFiles}";
93+
if (initialFileOpen && _fileTarget.DeleteOldFileOnStartup)
94+
archiveCleanupReason = "DeleteOldFileOnStartup=true";
9495

95-
return oldFilesDeleted;
96+
bool oldFilesDeleted = false;
97+
foreach (var cleanupFileInfo in FileInfoDateTime.CleanupFiles(fileInfos, maxArchiveFiles, _fileTarget.MaxArchiveDays, fileWildcardStartIndex, fileWildcardEndIndex, excludeFileName, wildCardContainsSeqNo))
98+
{
99+
oldFilesDeleted = true;
100+
DeleteOldArchiveFile(cleanupFileInfo.FullName, archiveCleanupReason);
96101
}
102+
103+
return oldFilesDeleted;
97104
}
98105
catch (Exception exception)
99106
{
@@ -325,13 +332,13 @@ private static string GetDeleteOldFileNameWildcard(string filepath)
325332
return string.Concat(filename, "*", fileext);
326333
}
327334

328-
protected bool DeleteOldArchiveFile(string filepath)
335+
protected bool DeleteOldArchiveFile(string filepath, string archiveCleanupReason)
329336
{
330337
for (int i = 1; i <= 3; ++i)
331338
{
332339
try
333340
{
334-
InternalLogger.Info("{0}: Deleting old archive file: '{1}'.", _fileTarget, filepath);
341+
InternalLogger.Info("{0}: {1} deleting old archive file: '{2}'.", _fileTarget, archiveCleanupReason, filepath);
335342
_fileTarget.CloseOpenFileBeforeArchiveCleanup(filepath);
336343
File.Delete(filepath);
337344
return true;

src/NLog/Targets/FileArchiveHandlers/LegacyArchiveFileNameHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ private void ArchiveFileAppendExisting(string newFilePath, string archiveFilePat
225225
newFileStream.SetLength(0);
226226

227227
// Attempt to delete file to reset File-Creation-Time (Delete under file-lock)
228-
if (!DeleteOldArchiveFile(newFilePath))
228+
if (!DeleteOldArchiveFile(newFilePath, "Truncate Active File"))
229229
{
230230
fileShare &= ~FileShare.Delete; // Retry after having released file-lock
231231
}
@@ -235,7 +235,7 @@ private void ArchiveFileAppendExisting(string newFilePath, string archiveFilePat
235235

236236
if ((fileShare & FileShare.Delete) == 0)
237237
{
238-
DeleteOldArchiveFile(newFilePath); // Attempt to delete file to reset File-Creation-Time
238+
DeleteOldArchiveFile(newFilePath, "Truncate Active File"); // Attempt to delete file to reset File-Creation-Time
239239
}
240240
}
241241

src/NLog/Targets/FileArchiveHandlers/RollingArchiveFileHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ private int RollToInitialSequenceNumber(string newFilePath)
118118
// Delete all files in the directory with matching filename-wildcard
119119
foreach (var fileInfo in fileInfos)
120120
{
121-
DeleteOldArchiveFile(fileInfo.FullName);
121+
DeleteOldArchiveFile(fileInfo.FullName, "DeleteOldFileOnStartup=true");
122122
}
123123

124124
return 0;

src/NLog/Targets/FileArchiveHandlers/ZeroFileArchiveHandler.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ private bool DeleteOldArchiveFiles(string newFilePath, bool initialFileOpen)
7878
// Wildcard not detected as required, so just delete/truncate the active file
7979
if (File.Exists(newFilePath))
8080
{
81-
return DeleteOldArchiveFile(newFilePath);
81+
var archiveCleanupReason = (_fileTarget.MaxArchiveFiles < 0 && _fileTarget.ArchiveOldFileOnStartup) ? "ArchiveOldFileOnStartup=true" : $"MaxArchiveFiles={_fileTarget.MaxArchiveFiles}";
82+
return DeleteOldArchiveFile(newFilePath, archiveCleanupReason);
8283
}
8384
}
8485
catch (Exception ex)

0 commit comments

Comments
 (0)