2012-12-23 22 views
1

我不是太熟悉Java日誌配置,但我基本上是想我的應用程序日誌記錄以相同的方式工作使用包裝配置文件來運行Java應用程序時,如:使用日期進行文件命名的標準文件記錄器?

wrapper.logfile.rollmode=DATE 
wrapper.console.format=PM 
wrapper.console.loglevel=INFO 
wrapper.logfile=/home/logs/wrapper_YYYYMMDD.log 
wrapper.logfile.format=LPTM 
wrapper.logfile.loglevel=FINER 
wrapper.logfile.maxsize=1m 
wrapper.logfile.maxfiles=0 

這似乎相當從一個典型的logging.properties文件不同:

java.util.logging.FileHandler.pattern = logs/java%u.log 
java.util.logging.FileHandler.limit = 100000 
java.util.logging.FileHandler.count = 1 
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 

有沒有一種簡單的方法來獲得同樣的事情?我有點困惑包裝器如何映射到內部配置記錄器。

回答

2

如果您問的是將默認Java記錄器與Tanuki Service Wrapper進行比較,那麼您正在比較蘋果和橙子。 Tanuki服務包裝實際上實現了它自己的日誌系統...在C中(header file for the logging code)。所以它真的與Java日誌無關。

不幸的是,Java中的默認日誌記錄系統(java.util.logging包)不支持每日日誌輪換。 There's a bug open添加此功能,但目前尚未解決。該錯誤報告提到可以編寫一個自定義處理程序來執行此操作,但這似乎很多工作,並且錯誤報告提到它可能會干擾其他應用程序。

到目前爲止,最簡單的解決方案是使用Logback,這是log4j的另一個替代品。這些第三方開源庫中的任何一個都提供了一個開箱即用的日常滾動文件appender選項。

例如,從documentation,這裏是一個logback.xml文件配置的logback登錄到每天滑過與每個文件的大小至多爲1 MB的文件的一個例子:

<configuration> 
    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>mylog.txt</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <!-- rollover daily --> 
     <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy 
      class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
     <!-- or whenever the file size reaches 1MB --> 
     <maxFileSize>1MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy> 
    <encoder> 
     <pattern>%msg%n</pattern> 
    </encoder> 
    </appender> 


    <root level="DEBUG"> 
    <appender-ref ref="ROLLING" /> 
    </root> 

</configuration> 
相關問題