2014-04-24 90 views
1

我們在下面複製了一個簡單的Logback配置。我的期望是應用程序在啓動時會繼續寫入日誌文件(即追加)。但是,當我們重新啓動應用程序時,現有文件將被丟棄,記錄器將創建一個新文件。我的理解是,FileAppender默認附加到日誌文件。即使添加「真實」也沒有什麼區別。我錯過了什麼嗎?Logback正在截斷而不是附加到日誌文件

<configuration> 
    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
    <append>true</append> 
    <File>${logDir}/${filename}.log</File> 
    <encoder> 
     <pattern>%d{yyyyMMdd-HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> 
    <appender-ref ref="FILE" /> 
    </appender> 

    <root level="INFO"> 
    <appender-ref ref="ASYNC"/> 
    </root> 
</configuration> 
+1

這有幫助嗎? http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/RollingFileAppender.html – vikingsteve

+0

感謝vikingsteve - 我不想實施基於時間或大小的滾動策略。只需附加到文件而不是在啓動時截斷並寫入文件。我沒有看到RollingFileAppender中的任何內容,我無需編寫自己的appender就可以使用它。 – Luhar

回答

-1

Luhar,

不知道,如果你還在尋找這個答案,因爲我看到有人問相當長一段時間了。但我最近做了一些關於logback的工作,並偶然發現了這個沒有答案的問題。你試圖做的事情看起來非常簡單,所以我想我會試試看,看看發生了什麼。

使用以下logback配置和隨附的代碼,我能夠追加到日誌文件中。使用上面的配置

<configuration> 
    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
     <File>test.log</File> 
     <encoder> 
      <pattern>%d{yyyyMMdd-HH:mm:ss.SSS} [%thread] %-5level %logger{36} - 
       %msg%n</pattern> 
     </encoder> 
    </appender> 
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> 
     <appender-ref ref="FILE" /> 
    </appender> 
    <root level="INFO"> 
     <appender-ref ref="ASYNC" /> 
    </root> 
</configuration> 

簡單的Java類:

public class App { 

    static Logger logger = LoggerFactory.getLogger("SimpleTest"); 

    public static void main(String[] args) { 
     logger.info("This is an INFO statement"); 
     logger.warn("This is a WARN statement"); 
     logger.error("This is an ERROR statement"); 

     try { 
      Thread.sleep(2000);  
      // make sure the AsyncAppender queue is flushed 
      // before program exits 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

以下是該程序的運行3次後,我的日誌文件。

20141222-22:32:10.391 [主要] INFO SimpleTest的 - 這是一個INFO語句

20141222-22:32:10.393 [主要] WARN SimpleTest的 - 這是一個WARN語句

20141222-22:32:10.393 [主要] ERROR SimpleTest的 - 這是一個錯誤語句

20141222-22:32:18.558 [主要] INFO SimpleTest的 - 這是一個INFO語句

20141222-22:32:18.560 [主要] WARN SimpleTest的 - 這是一個WARN語句

20141222-22:32:18.560 [主要] ERROR SimpleTest的 - 這是一個錯誤語句

20141222- 22:32:23.192 [主要] INFO SimpleTest的 - 這是一個INFO語句

20141222-22:32:23.194 [主要] WARN SimpleTest的 - 這是一個WARN語句

20141222-22:32: 23.194 [主]錯誤SimpleTest - 這是一個錯誤語句

所以我認爲logback配置工作正常。希望這可以幫助!

相關問題