2013-11-20 3 views
0

Итак, это вопрос, который был поставлен с этим вопросом: Using log4j in eclipse RCP doesn't work.Eclipse4 RCP: сконфигурируйте log4j с плагином фрагментов

До сих пор я могу использовать log4j API внутри моего RCP, но при его запуске с помощью следующей команды

Category CAT = Category.getInstance(getClass().getSimpleName()); 
CAT.debug("Application has been started"); 

Я получаю это исключение:

No appenders could be found for category (MyPlugin). 
Please initialize the log4j system properly. 

Я создал фрагмент плагин, содержащий файл с именем log4j.properties, а хост фрагмента - это плагин, содержащий API log4j. Файл собственности живет в «корне» фрагмента плагина

Мой log4j.properties файл выглядит следующим образом:

# Set root logger level to debug and its only appender to default. 
log4j.rootLogger=debug, default 
# default is set to be a ConsoleAppender. 
log4j.appender.default=org.apache.log4j.ConsoleAppender 
# default uses PatternLayout. 
log4j.appender.default.layout=org.apache.log4j.PatternLayout 
log4j.appender.default.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n 

Любые идеи, что я делаю не так?

+0

Это может быть так, что log4j.properties не в пути к классам вашего лесозаготовительной плагин. Не знаете, как настроить его с помощью вашей настройки, но одна вещь, которую вы можете попробовать, - вызвать PropertyConfigurator.configure (properties/fileName); –

+0

Я уверен, что это не часть моего класса, но я не знаю, почему. Я не знаю, как проверить, загружен ли плагин фрагмента, и если файл свойств «добавлен» в мое приложение rcp. Вызов вашей предлагаемой функции приводит к тому, что «Не удалось прочитать файл конфигурации [log4.properties], описанный в java.io.FileNotFoundException. Моя настройка не сложна. Ее стандартный eclipse4 rcp с плагином для log4j и плагин фрагмента для файла конфигурации – Markus

ответ

2

Я не уверен, какова цель использования фрагмента для сохранения конфигурации. Попробуйте поместить ваши свойства log4j (обратите внимание, что имя файла написано с ошибкой в ​​вашем ответе) непосредственно в корневую папку плагина. В Activator.start() выполнить следующий код:

public void start(BundleContext context) throws Exception { 
    super.start(context); 
    URL installURL = plugin.getBundle().getEntry("/"); 
    String installPath = Platform.asLocalURL(installURL).getFile(); 
    PropertyConfigurator.configure(installPath +"/log4j.properties"); 
} 

Прежде всего, категория документации говорит: Этот класс является устаревшим и заменен подклассу Logger.

Во-вторых, категория должна быть отображена на Appender:

log4j.category.MyPlugin=info,MyPlugin 
log4j.appender.MyPlugin=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.MyPlugin.layout=org.apache.log4j.PatternLayout 
log4j.appender.MyPlugin.layout.ConversionPattern={%t} %d - [%p] %c: %m %n 
log4j.appender.MyPlugin.file=C:/logs/MyPlugin.log 
log4j.appender.MyPlugin.DatePattern='.' yyyy-MM-dd-HH-mm 
+0

Похоже, что мой rcp находит файл сейчас, но все еще есть проблемы. При выполнении метода configure появляется следующее сообщение об ошибке: «Не удалось найти информацию о корневой категории. Это нормально? »Когда я пытаюсь записать какой-либо текст, я получаю такое же сообщение eror, что и в первую очередь: для категории (MyPlugin) не найдено ни одного приложения. Правильно выполните инициализацию системы log4j. – Markus

+0

Также я использую сейчас конфигурация log4, предложенная по этому вопросу: http://stackoverflow.com/questions/2128185/log4j-sample-configuration-file-properties-file. – Markus

+0

Если вы обнаружили, что Logger попытается использовать его вместо этого. Ore create appender MYPlugin в log4j. свойства –

Смежные вопросы