2011-09-05 198 views
3

我使用的是log4net,當我運行我的應用程序時,會創建幾個日誌文件。 每當時間格式發生變化時,log4net就會創建一個新的日誌文件,這意味着每當一分鐘過去時,我都會得到一個新的日誌文件。log4net - 只創建一個日誌文件

我可能missunderstod使用的XML語法,但我不知道它錯在哪裏(也許RollingFileAppender?)。

這裏的xml文件:

<log4net> 

    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %-5level [%thread] %logger:%line - %message%newline"/> 
    </layout> 
    </appender> 

    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
    <appendToFile value="true"/> 
    <rollingStyle value="Date"/> 
    <staticLogFileName value="false" /> 
    <datePattern value="yyyyMMdd_hhmm'.log'"/> 
    <file value="Boghe"/> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %-5level [%thread] %logger:%line - %message%newline"/> 
    </layout> 
    </appender> 

    <root> 
    <level value="ALL"/> 
    <appender-ref ref="ConsoleAppender"/> 
    <appender-ref ref="FileAppender"/> 
    </root> 

</log4net> 

感謝

回答

2

你需要你的約會模式更改爲類似

<datePattern value="yyyyMMdd" /> 

這一天將推出你的日誌文件一次。


例子: 利用這種配置

<file value="Foo" /> 
<StaticLogFileName value="false"> 
<datePattern value="yyyyMMdd_hhmm"/> 

你告訴這個文件appender創建新的日誌文件每分鐘(如果你是至少一分鐘一次寫東西到日誌) 。

假設您開始申請17:00:00 on 09/21/2011。您每秒輸出一次日誌信息。
這意味着,在前60秒(直到17:00:59),所有輸出將被放入一個名爲Foo20110921_1700的文件中。
17:01:00下一個輸出發生並且文件將被「翻轉」,這意味着創建了新文件Foo20110921_1701
在接下來的60秒內,所有的輸出都將放入這個新文件中。在17:02:0017:03:00等等處將再次發生。


有關更多信息,請參見RollingFileAppender documentation

+0

我想要的文件命名,如 「yyyyMMdd_hhmm」 雖然。如果我將它更改爲「yyyyMMdd」,我不會在文件名中獲得小時和分鐘 – KaiserJohaan

+0

爲什麼要這麼做?如果你想讓應用程序的開始時間輸出到日誌文件 – yas4891

0

或者,如果你不想按日期滾動,使用大小值

<rollingStyle value="Size"/> 
    <maximumFileSize value="10MB"/> 

所以,你會滾你的文件每10MB。

+0

,我仍然希望日誌文件的名稱類似於日期「yyyyMMdd_hhmm」。如果我只是更改rollingStyle,它只是命名文件'Boghe' – KaiserJohaan

2

如果你真的想只有一個文件,那麼你應該使用普通文件的appender:

http://logging.apache.org/log4net/release/config-examples.html#FileAppender

根據您的意見我假設你的應用程序的「短」時間用完,因此你想在日誌文件名中包含一些日期/時間信息。這個你可以這樣做:

<file type="log4net.Util.PatternString" value="Boghe%date{yyyyMMdd_hhmm}.log" /> 

更新:

配置方案(爲我的作品):

<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file type="log4net.Util.PatternString" 
     value="c:\temp\Boghe%date{yyyyMMdd_hhmm}.log" /> 

    <appendToFile value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date - %message%newline" /> 
    </layout> 
</appender> 
+0

是的,那更像是我想要的。我似乎無法得到它的工作,但它崩潰,你能展示它看起來像 ...? – KaiserJohaan

+0

%date {yyyyMMdd_hhmm}給我一個解析器錯誤。任何想法爲什麼? – KaiserJohaan

+0

你有哪個版本的log4net?你可能會發布你得到的錯誤嗎?您是否使用內部調試來查看此錯誤? –