我有碼頭6下運行在Linux上Solr的服務器,我試圖建立了Java記錄自定義格式,但是我似乎無法得到它認識我的自定義類。我是Java新手,因此可能引用它是我輸出我的類或類似的問題。請注意,這幾乎是同樣的問題,可以發現here,但答案有沒有幫助,因爲我有一個公共的無參數的構造函數。SolrJetty日誌記錄 - 如何讓自定義日誌格式化程序工作?
我的格式如下所示(描述here):
package myapp.solr;
import java.text.MessageFormat;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
public class LogFormatter extends Formatter {
private static final MessageFormat fmt = new MessageFormat("{0,date,yyyy-MM-dd HH:mm:ss} {1} [{2}] {3}\n");
public LogFormatter() {
super();
}
@Override public String format(LogRecord record) {
Object[] args = new Object[5];
args[0] = new Date(record.getMillis());
args[1] = record.getLevel();
args[2] = record.getLoggerName() == null ? "root" : record.getLoggerName();
args[3] = record.getMessage();
return fmt.format(args);
}
}
在我的logging.properties文件,然後我有下面的(以及性能配置文件路徑/模式和旋轉極限,數):
handlers = java.util.logging.FileHandler
java.util.logging.FileHandler.formatter = myapp.solr.LogFormatter
我然後導出我的課到myapp.jar,並把它在lib/ext文件夾中jetty.home(我也試過把它直接lib下,我試圖指定的路徑,將其與-Djetty.class.path參數)。但是,當我運行我的solr應用程序時,它仍然使用XmlFormatter。我能夠成功地將其更改爲使用SimpleFormatter,而不是我自己的自定義格式器。
我還創建了進口我LogFormatter,創建一個實例變量,並調用格式化方法並打印結果到控制檯測試類,並沒有任何問題,即工作在Eclipse中。
如果有幫助,我使用啓動的Solr /碼頭的命令是:
nohup java -DSTOP.PORT=8079 -DSTOP.KEY=secret -Dsolr.solr.home=../solr_home/local -Djava.util.config.file=../solr_home/local/logging.properties -jar start.jar > /var/log/solr/stdout.log 2&>1 &
所以我在做什麼錯,爲什麼會不是用我的自定義格式?