2013-11-26 82 views
3

我第一次在一個winForm應用程序中使用NLog,它可能會運行多年。此應用程序還將數據記錄在文本文件中。由於應用程序將運行多年,因此文本文件將會增長並增長。這就是爲什麼我想限制文本文件的大小。可以說,當達到10MB的限制時,文本文件開始刪除最後的條目以適應新的數據。我如何使用NLog來做到這一點。第一次使用NLog

在我的C#項目部分在那裏我有

private static Logger logger = LogManager.GetCurrentClassLogger(); 

logger.Trace("Error:.........."); // and similar msgs 

我NLog.config是(它只是數據記錄到一個文本文件)

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

    <targets> 
    <target name="logfile" xsi:type="File" fileName="${basedir}/file.txt" /> 
    </targets> 

    <rules> 
    <logger name="*" minlevel="Info" writeTo="logfile" /> 
    </rules> 
</nlog> 
+0

您能否更好地解釋您的意思(以及NLog要做的是什麼)?同時向我們展示你到目前爲止所嘗試的。 – varocarbas

+0

@varocarbas NLog用於記錄 – user2968369

+1

我想從這個事件中獲益以突出寫出正確的描述的重要性:從當前版本的問題中,您明確地表達了您的意思。你的原始版本在某種程度上誤導了任何知道這個工具的人,並且完全誤導了一個沒有使用這個工具的人(像我一樣)。至於Nlog可以理解爲N倍對數(我所理解的)。我之所以解釋這一點,是因爲我最近發現了很多「人」,更感興趣的是被誤解而不是幫助/幫助...... – varocarbas

回答

3

您可以限制文件大小爲10MB,並集最大arhive文件數到1:

<target xsi:type="File" 
     name="file" 
     layout="${longdate}|${level:uppercase=true}|${logger}|${message}"   
     archiveAboveSize="10000000" 
     maxArchiveFiles="1" 
     archiveFileName="${basedir}/log_archived.txt" 
     fileName="log.txt" /> 

當文件將延長10MB,它將被歸檔,並記錄將繼續新的文件。當新文件將擴展10MB時,它將替換歸檔文件。所以,你將有兩個文件 - 當前和歸檔。

+0

@varocarbas看起來像他想要的使用單個文件,這將保持大小小於10MB,並且添加新條目時應刪除最早的條目。但是這對於NLog來說是不可能的,所以我給他提供了兩個文件的替代解決方案 - 當前文件和歸檔文件 –

+1

感謝您的澄清。當OP使用代碼更新他的問題時,我刪除了我的評論。我完全誤解了NLog。 – varocarbas

+0

感謝您的迴應。所以,你的意思是在任何時候我都會有兩個文件,一個是我正在寫入的文件,另一個是檔案文件 – user2968369