2012-11-27 68 views
4

我想自定義的Tomcat6我的日誌信息,並創建了一個類「MyFormatter」它看起來像這樣:的Tomcat6似乎並沒有加載我LogFormatter類

public class LogFormatter extends Formatter { 

@Override 
public String format(LogRecord record) { 
    StringBuilder sb = new StringBuilder(); 

    sb.append("LOLCAT--") 
      .append(new Date(record.getMillis())) 
      .append(" \t") 
      .append(record.getThreadID()) 
      .append(" \t") 
      .append(record.getSourceMethodName()) 
      .append(" \t") 
      .append(record.getSourceClassName()) 
      .append(" \t") 
      .append(record.getLevel().getLocalizedName()) 
      .append(": ") 
      .append(formatMessage(record)) 
      .append(System.getProperty("line.separator")); 

    return sb.toString(); 
    } 
} 

我包裝成這樣.jar並放置在$ {catalina.home}/lib中。

在我logging.properties文件我已經添加了以下內容:

1catalina.org.apache.juli.FileHandler.level = FINE 
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
1catalina.org.apache.juli.FileHandler.prefix = lolcat. 
1catalina.org.apache.juli.FileHandler.formatter = my.package.LogFormatter 

幾夭嘗試後嘗試不同的包裝,不同的configs,我決定嘗試內置的「org.apache.juli.OneLineFormatter」 - 這完美地工作。所以配置應該沒問題。

的問題仍然存在,爲什麼不加載的tomcat6我的課?

+0

你看到什麼錯誤?你知道它是否可以加載它,或者這只是一個配置問題? –

+0

這個日誌根本就沒有提到這件事,它只是回到默認的日誌格式。我想我已經讀過,它無聲地做了這個後備。 – lassejl

+0

屬性文件說它應該在my.package中是這樣嗎?因爲班級沒有任何包裹 –

回答

5

我找到了解決辦法。

閱讀Tomcat和加載類後,我發現有是Tomcat如下的順序。它是這樣的;

引導(/ JRE/lib/ext目錄) - >系統(/卡塔利娜家庭/斌/) - >通用(/卡塔利娜家用/ lib目錄) - > web應用。

的tomcat-juli.jar其中包含日誌的東西裝有「系統」 - 工序,所以,當你把其他的東西記錄在常見,它會忽略導致其已經加載。

然後將溶液放置的.jar之前的tomcat-juli.jar在/jre/lib/ext.'

編輯加載又名: 這並不總是一個好主意,以保持它的JRE文件夾,所以我發現最好的解決方案是將其放入背書目錄中。

-Djava.endorsed.dirs=${catalina_home}/endorsed 

這贊同目錄將系統類加載之前運行。