回答
我不知道這是否回答你的問題,但它看起來像maxArchiveFiles
應該做你想做的。我自己並沒有真正使用這個選項,所以我不能肯定地說。您當然可以將您的日誌文件「歸檔」在同一個文件夾中。
如果是我,我會做一個非常小的程序,做了一些記錄和設置時間(archiveEvery="minute"
),這樣很容易迫使歸檔邏輯在踢,設置maxArchiveFiles
到像5,看看NLog只保存5個日誌文件。運行你的程序一段時間,可能通過定時器生成日誌消息,這樣你就可以在足夠的時間內將日誌消息放在空間上,以便NLog的歸檔/滾動邏輯開始運行。
試驗歸檔文件命名模板。使用archiveNumbering
選項可以控制歸檔文件的編號方式。
對不起,我不能給出一個更明確的答案或具體的例子,但我還沒有使用這些選項,所以我只需要做同樣的實驗(s),我現在被按下的時間。
我發現如果我在日誌文件名中使用日期標記存檔文件,存檔日誌會變得困惑,並且{#}
總是轉換爲「0」,導致舊日誌永遠不會被刪除。另外,如果我在日誌文件名中使用GDC引用,它根本不會切換日誌。
我現在必須手動刪除舊日誌,如果我想這些奇特的日誌文件名。他們在文件名中包含日期的事實會導致他們自動切換文件。
// Delete log files older than X days
var dirInfo = new DirectoryInfo(".");
var oldestArchiveDate = DateTime.Now - new TimeSpan(30, 0, 0, 0);
foreach (FileInfo fi in dirInfo.GetFiles())
if (fi.Name.StartsWith("log-") && fi.Name.EndsWith(".txt") && fi.CreationTime < oldestArchiveDate)
fi.Delete();
var midnight = DateTime.Today.AddDays(1);
_oldLogCleanUpThread = new System.Threading.Timer(OldLogCleanUpThreadMethod, null, midnight - DateTime.Now, TimeSpan.FromDays(1));
n日誌目標:
filename="${environment:variable=HOMEDRIVE}${environment:variable=HOMEPATH}\logs\log-${gdc:item=MySpecialId}-${date:format=yyyyMMdd}.txt"
GDC.Set("MySpecialId", ...);
你可以簡單地使用內置的存檔功能。除了當前日誌以外,此設置還會保留7箇舊日誌文件。清理由NLog自動完成。
<?xml version="1.0" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="file" xsi:type="File"
layout="${longdate} ${logger} ${message}"
fileName="${basedir}/logs/logfile.txt"
archiveFileName="${basedir}/logs/log.{#}.txt"
archiveEvery="Day"
archiveNumbering="Rolling"
maxArchiveFiles="7"
concurrentWrites="true" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
也看到了file target
如果我使用archiveAboveSize會發生什麼?這將不再有效,因爲如果我在一天內有7個文件,它會刪除所有其他文件。有沒有解決方案? – 2013-07-04 16:29:32
@UriAbramson恕我直言,這些是互斥設置。 – ccellar 2013-07-19 08:53:57
@ccellar我知道這是舊的,但現在你有:archiveNumbering =「DateAndSequence」 – 2015-12-21 11:00:01
//Store the number of days after which you want to delete the logs.
int Days = 30;
// Storing the path of the directory where the logs are stored.
String DirPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Substring(6) + "\\Log(s)\\";
//Fetching all the folders.
String[] objSubDirectory = Directory.GetDirectories(DirPath);
//For each folder fetching all the files and matching with date given
foreach (String subdir in objSubDirectory)
{
//Getting the path of the folder
String strpath = Path.GetFullPath(subdir);
//Fetching all the files from the folder.
String[] strFiles = Directory.GetFiles(strpath);
foreach (string files in strFiles)
{
//For each file checking the creation date with the current date.
FileInfo objFile = new FileInfo(files);
if (objFile.CreationTime <= DateTime.Now.AddDays(-Days))
{
//Delete the file.
objFile.Delete();
}
}
//If folder contains no file then delete the folder also.
if (Directory.GetFiles(strpath).Length == 0)
{
DirectoryInfo objSubDir = new DirectoryInfo(subdir);
//Delete the folder.
objSubDir.Delete();
}
}
的文檔,你可以使用這一天的名稱並設置maxArchiveFiles
固定數量。例如,每週的每週可以存儲100個100Kb的文件:
<variable name="dayname" value="${date:format=dddd}" />
<target name="logfile" xsi:type="File"
fileName="${basedir}/Logs/MyLog_${dayname}.txt"
archiveFileName="${basedir}/Logs/Archives/MyLog_${dayname}.{#####}.txt"
archiveAboveSize="102400"
archiveNumbering="Sequence"
maxArchiveFiles="100"
concurrentWrites="true"
keepFileOpen="false"
encoding="iso-8859-2" />
- 1. NLog - 刪除X天以前的日誌
- 2. Jetty每天刪除日誌文件
- 3. 如何自動壓縮日誌文件並在x天后刪除?
- 4. 每天創建新的日誌文件並刪除以前的日誌文件
- 5. 刪除OpenLDAP日誌文件
- 6. Powershell日誌刪除文件
- 7. 7天后刪除文件
- 8. Python - 刪除條件行聊天日誌文件
- 9. 在linux中刪除比x天早的日誌
- 10. 刪除X個文件X舊日--Powershell
- 11. Talend - 刪除大於X天的文件
- 12. forfile - 刪除x天前的文件
- 13. Powershell刪除x天前的文件
- 14. 滾動日誌文件和刪除舊的日誌文件
- 15. 每2天自動刪除一次tomcat日誌文件。
- 16. PowerShell的 - 刪除文件日期早丹X天,但排除的文件夾
- 17. Plesk面板Cronjob刪除文件夾舊的然後x天
- 18. 如何在x天后刪除特定類型的文件?
- 19. 如何在n天后刪除Tomcat訪問日誌?
- 20. 如何刪除MySQL日誌文件
- 21. 刪除日誌文件窗口
- 22. 刪除舊的日誌文件在AIX
- 23. 刪除日誌文件不起作用
- 24. 從日誌文件中刪除例外
- 25. 如何自動刪除日誌文件?
- 26. Plesk刪除IIS日誌文件?
- 27. 使用PowerShell刪除日誌文件
- 28. 日誌刪除的文件中的Bash
- 29. shell腳本文件找到早於X天,並刪除他們,如果他們沒有在日誌文件
- 30. ETW - 刪除日誌文件導致日誌記錄中斷?
請標記爲答案。 – Julian 2016-09-02 18:30:41