Я хочу настроить log4j для тестовых примеров JUnit. Мои тесты распространяются по нескольким файлам, но имеют ту же настройку log4j. Где я могу это сделать?Настройка log4j для JUnit
Я не хочу использовать файл свойств log4j.
Я хочу настроить log4j для тестовых примеров JUnit. Мои тесты распространяются по нескольким файлам, но имеют ту же настройку log4j. Где я могу это сделать?Настройка log4j для JUnit
Я не хочу использовать файл свойств log4j.
Мое решение, которое, похоже, работает.
Написать пользовательский класс, который расширяет систему LOG4J
общественного класса myLogger расширяет Logger { ... материал ...
}
для 'вещи', необходимо реализовать следующее (или, по крайней мере, я)
Конструктор какого-то типа public myLogger (String name)
.. в каждом классе, где вы хотите/должны включать статический член myLogger
private static final myLogger errorLog = new myLogger("nameOfClassOrWhateverNameYouFancy")
Если вы используете один и тот же имя во всех классах они будут входить в систему в случае же регистрации (это вам вероятно, уже знаете)
назад в своем классе myLogger вам нужно реализовать метод для установки уровня журнала (это, как я это сделал ...)
/**
*
* The add(int i, String s) method
* @param s the message string
*
* @param i used in the switch to create the required level of debug
* @param s the message to send
*
* use this method to create a log message of any required level
* The levels are as follows:
* 1 debug - used during production
* 2 info - may be used for messages to user
* 3 warn - warnings for requesting users re-enter information (data type checking etc)
* 4 error - programmatic/user error may result in unexpected output
* 5 fatal - severe error (comms error) the system will terminate, cleanly if possible, current state will be written to file
*
* Prior to all this however the method determines the calling class of itself
*
*/
public void add(int i, String s)
{
switch (i)
{
case 1: log.debug(s);break;
case 2: log.info(s);break;
case 3: log.warn(s);break;
case 4: log.error(s);break;
case 5: log.fatal(s);break;
}
}
Теперь, если вы хотите какой-то конкретный Loging примеры для странных uff 'у вас есть 2 варианта, как я уже говорил ранее, вы можете создать статический член в названном журнале, или вы можете добавить статические члены в свой класс myLogger (как я это сделал).
Тогда для каждого из этих статических членов вы, вероятно, хотите уникальный
set[nameOfLogger](int i, string s)
, который в основном имеет такой же структуры, что и выше способа.
Теперь, если вы хотите, чтобы вызвать его из класса вы звоните
myLogger.set[nameOfLogger](1, "s")
и вы уезжаете.
Затем вам необходимо добавить информацию о уровне журнала (DEBUG, WARN и т. Д.) И куда отправлять сообщения (консоль, файл и т. Д.) В свои log4j.properties (как я использую) или в файл log4j.xml ,
Не забудьте убедиться в том, что строки, связанные с установкой статических именованных логгеров, происходят после экземпляра rootLogger, который давно меня заставил!
Я включил то, что я чувствую, довольно обширное обучение, так как я боролся с этим довольно долгое время и только получил его до окончательной работы сегодня!
Я счастливый кролик в настоящее время .... до тех пор пока я нарушу что-то еще;)
David
К сожалению только что заметил, что вы не хотите использовать файл log4j.properties. по какой-либо причине?
Если не только
import org.apache.log4j.Logger;
создать экземпляр протоколирования
private Logger jUnitTestingLogger;
затем установите вывод, используя различные вызовы методов (я имею в виду особенно надстройкой Appender), я никогда сделал это так, чтобы не знал, как!
Интересно, что существует метод assertLog (булевское утверждение, строковое сообщение), который может быть полезен для вас в вашем случае.
Что означает u в качестве файла свойств log4j ... это log4j.xml? –
Да. Я хочу настроить log4j через код. –
Почему вы не хотите использовать log4j.xml .... есть какие-то конкретные требования –