1. 程式人生 > >勿在 LogBack 的配置中使用相對路徑

勿在 LogBack 的配置中使用相對路徑

請看下面這段配置,這是無法工作的:

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <configuration>  
  3.     <contextName>JTheque</contextName>  
  4.     <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  5.         <file>logs/jtheque.log</file>  
  6.         <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">  
  7.             <FileNamePattern>logs/jtheque.%i.log.zip</FileNamePattern>  
  8.             <MinIndex>1</MinIndex>  
  9.             <MaxIndex>5</MaxIndex>  
  10.         </rollingPolicy>  
  11.         <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">  
  12.             <MaxFileSize>5MB</MaxFileSize>  
  13.         </triggeringPolicy>  
  14.         <layout class="ch.qos.logback.classic.PatternLayout">  
  15.             <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>  
  16.         </layout>  
  17.     </appender>  
  18.     <root level="DEBUG">  
  19.         <appender-ref ref="FILE"/>  
  20.     </root>  
  21. </configuration>  

使用該配置,不會生成任何日誌檔案,這可能是 LogBack 的 bug,解決的辦法就是使用絕對路徑,你可以用一些系統變數來代替,例如:

  1. ...  
  2. <file>${user.dir}/logs/jtheque.log</file>  
  3. <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">  
  4.     <FileNamePattern>${user.dir}/logs/jtheque.%i.log.zip</FileNamePattern>  
  5.     <MinIndex>1</MinIndex>  
  6.     <MaxIndex>5</MaxIndex>  
  7. </rollingPolicy>  
  8. ...  

現在就好了,希望對某些使用 LogBack 的人有幫助。

其實使用相對路徑是能產生日誌檔案的,只是這個相對路徑是相對與Eclipse(我是使用eclipse開發的,在eclipse啟動的),我發現日誌全部跑到eclipse安裝目錄裡面去了

不過看樣子,logback是不推薦使用相對路徑來記錄日誌檔案,個人覺得確實使用一些環境變數來引用絕對路徑要更好控制一點

tomcat下可以用:${catalina.base}/logs/your_log.log

  一直使用相對路徑. 沒發現問題.  使用你這個配置也沒問題. 可能你用的版本比較老,用最新的時會有警告,   http://logback.qos.ch/codes.html#layoutInsteadOfEncoder    ps:  logback在當打包時目錄不存在時不會自動建立的目錄,  需要做小小的修改才行.

1, 把日誌傳送到郵件中

2, 把日誌儲存到資料庫中(有非同步麼?)