Как управлять log4j.properties в кодировке jUnit для веб-сервлета - PullRequest
4 голосов
/ 12 февраля 2012

Я занимаюсь разработкой веб-сервлета и у меня возникли путаницы с log4j.properities, и я решил вызвать инициализирующий регистратор в конструкторе.

public static Logger logger = Logger.getLogger(MyProject.class.getName());
public MyProject() {
    super();
    // TODO Auto-generated constructor stub
    ClassLoader loader = Thread.currentThread().getContextClassLoader();
    URL url = loader.getResource("log4j.properties");
    PropertyConfigurator.configure(url);
}

В общем, файл журнала о веб-сервлете ссылается на каталог журнала tomcat.

log4j.rootLogger=debug, R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.base}/logs/myproject.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

Но, при кодировании jUnit для веб-сервлета, файл журнала ссылается на неправильный адрес, потому что $ {catalina.base} - пустой текст.Журнал ошибок находится здесь.

[junit] log4j:ERROR setFile(null,true) call failed.
[junit] java.io.FileNotFoundException: /logs/myproject.log (No such file or directory)

Итак, пожалуйста, научите меня мудрому управлению с файлом журнала.Я надеюсь остановить вывод файла журнала во время тестирования с помощью jUnit.

1 Ответ

6 голосов
/ 12 февраля 2012

Вы должны поддерживать отдельный log4j.properties для развертываний Tomcat и модульных тестов. Модульный тест log4j.properties, вероятно, будет более тяжелым для отладочной информации, в то время как версия развертывания должна минимизировать выходные данные журнала, чтобы избежать снижения производительности.

Для этого необходимо правильно совмещать путь к классам, чтобы модульный тест log4j.properties был выбран для модульных тестов, но не упакован в WAR. Условно это входит в src/test.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...