2010-06-17 1 views
6

У меня есть довольно большая библиотека, разработанная специально для использования в Android-приложении. Однако сама бизнес-логика не зависит от Android. Чтобы сохранить это, я использовал Commons Logging в этой библиотеке, и это соответствующие тесты JUnit (которые я запускаю в Eclipse).Нет входа в сообщество Android?

Однако теперь, когда я начинаю интегрировать его в Activity, который я запускаю на Android, я не могу заставить мой журнал работать. В Eclipse/JUnit я просто потянул файл jar logjj, а также файл log4j.properties. Это не работает при развертывании на устройстве. После борьбы с попыткой заставить это работать в течение нескольких часов, я сдался и попытался заменить все свои права на ведение журнала андроидом.util.Log. Теперь я могу войти в систему, но все тесты JUnit нарушены. Когда какой-либо JUnit пытается зарегистрироваться с использованием android.util.Log, он выдает исключение RuntimeException «Stub!».

Я бы предпочел вернуться к моему подходу к регистрации в сообществе .. если кто-то может помочь с этим .. в противном случае .. что я могу сделать, чтобы мои тестовые примеры JUnit выполнялись с помощью «android.util.Log»?

Большое спасибо заранее. Я потратил больше нескольких часов на это, и я хотел бы снова перейти к написанию реального кода!

ответ

4

Я не верю, что есть порт log4j для android atm. Тем не менее, у андроида есть java.util.logging, встроенный и ведение журнала commons, можно подключиться к нему через Jdk14Logger. Если commons logging работает на android, вам, вероятно, будет хорошо идти.

1

Вы можете создать интерфейс для своего собственного регистратора, который в зависимости от платформы создает экземпляр делегата для ведения журнала, который является общим для платформы. Пока вы работаете и отлаживаете, этого должно быть достаточно, а затем в производственном коде на устройстве вы можете просто вставить регистратор, который ничего не делает, и вы все время сохраняете, чтобы загромождать фонотеку.

5

Как упоминает Qberticus, commons-logging будет работать в Android. Я только что подтвердил это, отбросив библиотеку регистрации сообщений в проект Android и записывая сообщения на уровне INFO. Commons-logging будет по умолчанию использовать структуру ведения журнала Jdk14, которая затем перейдет в подсистему Android Logging, с результатами, отображаемыми в logcat. Тег установлен в класс, чей журнал используется: например, использование журнала из LogFactory.getLog(Foo.class) будет иметь тег «Foo».

0

Существует новый проект, который позволяет log4j на android. Использование log4j над slf4j возможно. Он также предоставляет приложение для LogCat. См. Проект android-logging-log4j или log4j support in android

1

Решение Paul не работает для меня. Это привело к конфликту во время компиляции, потому что, как это бывает, банкомат регистрации сообщества уже включен в SDK. Моя проблема заключалась в том, что я не мог скомпилировать ее.

Добавление:

extensible.classpath=${sdk.dir}/tools/lib/commons-logging-1.1.1.jar 

моим ant.properties сделал трюк.

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