2010-06-15 93 views
34

我需要我的應用程序在每次運行時創建一個日誌文件。log4net每次運行一個文件

我的首選格式是App.log.yyyy-MM-dd_HH-mm-ss。如果這是不可能的,我會滿足於App.log.yyyy-MM-dd.counter

這是我目前的appender配置:

<appender name="File" type="log4net.Appender.RollingFileAppender"> 
    <file value="App.log"/> 
    <rollingStyle value="Date"/> 
    <datePattern value=".yyyy-MM-dd_HH-mm-ss"/> 
    <staticLogFileName value="false"/> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
</appender> 

但它創建一個基於文件的隨機數在日期和時間。

回答

51

我假設應用程序應該只創建一個每次運行時的日誌文件,所以你並不需要一個滾動文件附加器(雖然我的解決方案將適用於滾動文件附加目的地,以及):

<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file type="log4net.Util.PatternString" value="c:\temp\App-%date{yyyy-MM-dd_HH-mm-ss}.log" /> 
    <appendToFile value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%2thread] %-5level - %message%newline" /> 
    </layout> 
</appender> 

(很明顯,你可以用其他的自己的佈局和其他設置文件的appender。)

+2

該訣竅。我不知道PatternString。謝謝! – 2010-06-16 12:57:59

+0

糾正我,如果我錯了,但這將創建無限數量的日誌文件,作爲rollingstyle =一旦解決方案將自動清除舊文件。我認爲解決方案更好。 – habermanm 2013-09-23 15:54:39

+0

我想你是對的。我不記得在我給出答案時是否可以「滾動=一次」... – 2013-09-25 11:17:20

27

另外請注意,您可以設置滾動風格

rollingstyle="Once"

它會在每次運行時創建一個新文件。如果staticLogFileName設置爲true(例如,logname.log)以前的日誌將被設置爲logname.log.1logname.log.2

的文件數覆蓋最早的(比如,10)保持前可以通過設置

被控制

maxSizeRollBackups="10"

編輯: 我的配置,這就造成每個執行的已蓋銷日誌(除非存在,在這種情況下,它遵循.1規則,看起來是這樣的:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="Logs\MyLog-%date{dd-MM-yyyy}.log" /> 
    <appendToFile value="false" />  
    <maxSizeRollBackups value="-1" /> <!--infinite--> 
    <staticLogFileName value="true" /> 
    <rollingStyle value="Once" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5level %date [%thread] %c{1} - %m%n" /> 
    </layout> 
</appender> 

肯定不是100%,如果我需要appendToFile="false"the docs說,當你使用rollingStyle="Once"這會自動完成的,但在任何情況下,這使得它更清晰。

0

它來自Apache的記錄在log4net的文檔在:

https://logging.apache.org/log4net/release/config-examples.html

按Ctrl + F爲 「按計劃執行」

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="logfile.txt" /> 
    <appendToFile value="false" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="-1" /> 
    <maximumFileSize value="50GB" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
</appender>