У меня есть сервер Solr в Linux, работающий под Jetty 6, и я пытаюсь настроить пользовательский форматировщик для ведения журналов Java, однако я не могу заставить его распознавать мой пользовательский класс. Я новичок в Java, поэтому возможно, что это проблема, связанная с тем, как я экспортирую свой класс или что-то в этом роде. Обратите внимание, что это почти тот же вопрос, который можно найти здесь , однако ответ там не поможет, так как у меня есть открытый конструктор без параметров.
Мой форматтер выглядит следующим образом (как описано здесь ):
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, создает переменную экземпляра, вызывает метод format и выводит результат на консоль, и это работало без каких-либо проблем в Eclipse.
Если это поможет, я использую команду для запуска Solr / Jetty:
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 &
Так что же я делаю не так, почему он не использует мой пользовательский форматер?