Eclipse PDE и log4j.properties? - PullRequest
       6

Eclipse PDE и log4j.properties?

3 голосов
/ 26 августа 2010

Я создал проект PDE eclipse и добавил log4j в качестве зависимости, используя пакеты slf4j-api и slf4j.log4j12.В классе я создал регистратор:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyTest {

  private static final Logger logger = LoggerFactory.getLogger(MyTest.class
      .getName());

  public void tt() {
    logger.info("log-test");

  }

}

, но когда я запускаю проект PDE с использованием конфигурации запуска OSGI, я получаю предупреждения:

log4j:WARN No appenders could be found for logger (loggin_test.MyTest).
log4j:WARN Please initialize the log4j system properly.

на основе этой информации:

http://jaikiran.wordpress.com/2006/07/05/i-get-log4jwarn-no-appenders-could-be-found-for-logger-message-2/

Мне нужно поместить log4j.properties в путь к классу PDE.Я попытался поместить его в корень проекта PDE и добавить:

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               log4j.properties

на панель build.properties.Но я все еще получаю то же предупреждение.Где я могу поместить файл log4j.properties в проект PDE?

РЕДАКТИРОВАТЬ: Я также пытался добавить его в папку / src, но это не помогает.

Ответы [ 5 ]

2 голосов
/ 26 августа 2010

Вы столкнулись с вашей первой проблемой видимости ресурса с OSGi. Помните, что в OSGi комплекты должны явно определять их зависимости. Ваша проблема заключается в том, что ваш пакет определяет файл свойств log4j, но его должен прочитать этот пакет log4j. Но пакет log4j ничего не знает о вашем пакете (и не должен).

Вот 2 решения проблемы:

  1. Использовать механизм друзей Eclipse
  2. Поместите файл свойств log4j во фрагмент OSGi и поместите его в комплект log4j

Вариант 2 - лучшее решение, но если вам легче найти вариант 1, переходите к этому.

0 голосов
/ 12 сентября 2017

Почему бы не использовать средство ведения журнала платформы ?

Я недавно добавил запись в свой плагин Eclipse. Я использовал средство регистрации, встроенное в PDE. Я опубликую это на тот случай, если этот вариант каким-то образом упустят из виду. Сначала я не осознавал, что мне не нужно добавлять log4j, возможно, другие тоже этого не понимают.

0 голосов
/ 16 октября 2013

У меня была такая же ситуация, когда я пытался перейти с использования slf4j-simple на slf4j-log4j12 (при добавлении банки log4j). После некоторой отладки, как упоминает SteveD, проблема связана с видимостью ресурса. В моей ситуации у меня был плагин, который содержал мои библиотеки журналов; однако я не хотел указывать свои свойства ведения журнала в общем плагине.

Мой подход, который может работать для вашей ситуации, заключался в том, чтобы иметь конфигурацию ведения журнала для каждого плагина, для которого вы хотите иметь возможности ведения журнала. Для плагина, который требует регистрации, я бы добавил что-то вроде следующего к активатору плагина:

Bundle bundle = bundleContext.getBundle();
URL entry = bundle.getEntry("log4j.properties");

try(InputStream inputStream = entry.openStream())
{
    PropertyConfigurator.configure(inputStream);
}
catch(IOException e) {}

Несмотря на то, что, к сожалению, требуется добавить код в активатор; Мне удалось настроить различные возможности ведения журналов для каждого плагина, мне не приходилось иметь дело с новыми регистрациями плагинов / друзей Eclipse, а также не приходилось иметь дело с управлением файлами log4j.properties в любом файле манифеста или build.properties.

Другие заметки

  • Когда появляется сообщение об ошибке инициализации («Пожалуйста, правильно инициализируйте систему log4j»), оно появится только один раз. Сначала это вызывало у меня некоторую путаницу, когда я не обнаружил, что два (2) плагина были настроены неправильно, но появилось только одно (1) сообщение об ошибке.
0 голосов
/ 27 октября 2010

У меня такая же проблема. Добавление папки, содержащей log4j.xml, в путь сборки проекта недостаточно (почему бы и нет?). Во всяком случае, помимо причины этого (может быть, гуру eclipse могут ответить на этот вопрос за нас), я решил свою проблему, добавив папку, содержащую log4j.xml в eclipse «Run configuration».

После того, как вы впервые попробуете запустить автономное приложение и получите раздражающее сообщение «Не найдено ни одного приложения для регистратора», выполните следующие действия:

  1. Перейти в меню «Выполнить»> «Выполнить настройки»
  2. Ваш основной класс должен появиться где-то в левом дереве. Вероятно, в разделе «Java-приложение». Так что выберите его
  3. Выберите вкладку «Classpath», выберите «Записи пользователя» и нажмите кнопку «Дополнительно».
  4. Во всплывающем окне «Дополнительные параметры» выберите «Добавить папки», нажмите кнопку «ОК».
  5. Во всплывающем окне «Выбор папки» перейдите в папку, в которой находится файл log4j.xml, и нажмите «ОК».
  6. Нажмите кнопку «Выполнить» ... и ... наконец-то!
0 голосов
/ 26 августа 2010

AFAIK, вам все еще нужен JAR Log4j, так как SLF4J это просто оболочка вокруг него.Загрузите JAR с веб-сайта Apache , добавьте его в путь сборки, и он должен работать просто отлично.

...