我想定期(每小时)将日志文件从“Logs”文件夹归档到“Archive”文件夹,然后立即从“Logs”文件夹中删除这些归档文件。
目前,我正在使用下面的c#代码进行归档,但是我没有看到想要的输出。我们使用的是Nlog版本4.7.11。
target.FileName = @"C:\Logs\Log-${date:format=yyyy-MM-dd-hh}.log";
target.ArchiveFileName = @"C:\Archives\Log-${date:format=yyyy-MM-dd-hh}.log";
target.ArchiveEvery = FileArchivePeriod.Hour;
target.ArchiveOldFileOnStartup = true;
target.DeleteOldFileOnStartup = true;
target.MaxArchiveDays = 10;
target.ArchiveNumbering = ArchiveNumberingMode.Date;
target.MaxArchiveFiles = 50;
target.ArchiveDateFormat = "yyyy-mmm-dd hh-mm";
target.EnableArchiveFileCompression = true;
2条答案
按热度按时间sbtkgmzw1#
您可以扩展您的NLog方法,在日志记录后运行某个方法,请参见:https://github.com/NLog/NLog/wiki/MethodCall-target.
方法调用目标:
Calls the specified static method on each log message and passes contextual parameters to it.
您可以创建一些使用
System.IO
的代码,以便根据需要移动和归档代码。kmpatx3s2#
NLog支持2种文件归档模式:
ArchiveEvery
控制何时滚动。FileName
包含${date}
或${shortdate}
(自动滚动)NLog不支持混合使用这两种文件归档模式。如果您希望将文件移动到归档文件夹中,则必须使用静态文件名:
或者,您可以使用动态存档模式,然后使用scheduled-task/cron-job将日志文件压缩/移动到所需的位置:
另请参见不要混合动态和静态归档模式