我正在使用jetty6與SLF4J和java日誌記錄,並一直試圖添加一個自定義日誌格式化程序,但無論我嘗試我似乎無法得到它的工作。Jetty6 slf4j日誌記錄 - 如何讓自定義日誌格式化工作?
我有一個格式化,像這樣:
package mycode.logging;
public class DeadSimpleFormatter extends SimpleFormatter
{
// Nothing here at all - just an empty subclass of SimpleFormatter.
}
我想用這個作爲默認爲我的碼頭記錄,所以我創建了一個$ {} jetty.home /resources/logging.properties file:
handlers=java.util.logging.FileHandler
.level=INFO
java.util.logging.FileHandler.pattern=logs/test_%u.%g.log
java.util.logging.FileHandler.limit=90000
java.util.logging.FileHandler.count=20
java.util.logging.FileHandler.formatter=mycode.logging.DeadSimpleFormatter
mycode.level=INFO
我創建了一個jar文件logging.jar,其中包含了DeadSimpleFormatter類。我把這個jar放到$ {jetty.home}/lib/ext中。
我開始碼頭:
java -Djava.util.logging.config.file=resources/logging.properties
-jar start.jar etc/jetty-logging.xml etc/jetty.xml
我可以看到所創建的輸出文件。它遵循我的屬性文件中定義的限制和計數規則。但它不使用我的格式化程序 - 它將恢復爲默認的XmlFormatter。我沒有看到stdout或stderr出錯。
如果我改變logging.properties文件來設置這樣的格式:
java.util.logging.FileHandlerformatter=java.util.logging.SimpleFormatter
...那麼它的工作原理 - 日誌文件被寫入了使用正常SimpleFormatter。所以我相信,我的物業是好的,我有我的slfj罐等所有正確的。只是Jetty不喜歡我的DeadSimpleFormatter。
由於沒有什麼 - 字面意思! - 在DeadSimpleFormatter中,我認爲這可能是一個類加載問題。我試過這樣明確地添加jar文件:
java -Djetty.class.path=/mypathtojettyhome/lib/ext/logging.jar
-Djava.util.logging.config.file=resources/logging.properties -jar start.jar
etc/jetty-logging.xml etc/jetty.xml
......但沒有快樂。
我把主要方法爲我DeadSimpleFormatter和檢查,我可以運行jar:
java -jar lib/ext/logging.jar
...這工作,所以我敢肯定我的罐子就可以了。
有沒有人有任何想法這裏發生了什麼?我嘗試了所有我能想到的組合。
感謝, 阿拉斯泰爾
Alastair,你有沒有得到這個工作?我在Tomcat 7上遇到了同樣的問題。我添加了無參數的默認構造函數,但仍然無法使其工作。和你一樣,屬性文件中的所有OTHER屬性都得到了尊重,但沒有指向我的自定義impl的formatter屬性。 – 2011-10-29 23:36:25