Активировать OSGI LogListener перед другими службами?

Я пишу настольное приложение на основе OSGI, используя Apache Felix, Declarative Services и Maven. Он будет использовать JavaFX, поэтому я тоже использую Drombler FX.

В разрабатываемых мной пакетах я хотел бы использовать соответствующий механизм ведения журнала, и в настоящее время я пытаюсь заставить Apache Felix Log работать. У меня нет проблем с получением LogService но этого недостаточно для вывода вывода на консоль.

Слово в сети, что Эверит osgi-loglistener-slf4j сделает работу и - конечно же - после osgi-loglistener-slf4j был активирован вывод журнала на консоль.

Тем не мение, osgi-loglistener-slf4j не активируется до тех пор, пока не будут собраны все мои собственные пакеты, поэтому никакая интересующая меня информация журнала не выводится. Я пытался создать @Reference к LogLevel в моей первой связке, чтобы попытаться форсировать активацию osgi-loglistener-slf4j, но безуспешно.

Как я могу получить osgi-loglistener-slf4j активируется раньше всего? Я читал о начальных уровнях, но не смог найти никакой информации о том, как применять их в моем контексте (т. Е. На рабочем столе, а не на сервере, поэтому нет PAX или Karaf; Maven; я использую NetBeans, поэтому Eclipse отсутствует).

1 ответ

Решение

Drombler FX использует SLF4J: http://www.drombler.org/drombler-fx/0.7/docs/tutorial/logging.html

Просто используйте следующее, и оно должно работать:

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

...

private static final Logger LOG = LoggerFactory.getLogger(MyClass.class);

В POM добавьте следующую зависимость:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>
Другие вопросы по тегам