Добавление log4j.properties в файл war (в приложении Solr) - PullRequest
1 голос
/ 20 февраля 2012

У меня проблема с входом в Solr. Я хочу, чтобы он не записывал все на стандартный вывод (я имею в виду glassfish server.log). Я хочу, чтобы он использовал log4j и записывал свои сообщения в отдельный файл. Я создал файл log4j.xml, но не знаю, смогу ли я добавить его в файл .war. Я попробовал внешний файл log4j.xml и установил параметр JVM -Dlog4j.configuration = file: / {path_to_file}, и это сработало, но только частично. У меня установлены другие приложения на Glassfish, и все они начали писать в этот файл. Любая помощь приветствуется.

1 Ответ

2 голосов
/ 20 февраля 2012

Вы должны также переключить Solr slf4j на log4j. Насколько я вижу, ты должен залатать войну.

Если вы используете муравей, этот фрагмент может помочь вам с его исправлением:

<project name="solr-war-patching" default="patch" basedir=".">

    <target name="patch" description="Patches solr war file">
        <unjar src="solr.war" dest="solr.war.folder"/>
        <delete file="solr.war.folder/WEB-INF/lib/slf4j-jdk14-1.6.1.jar" />
        <delete file="solr.war.folder/WEB-INF/lib/log4j-over-slf4j-1.6.1.jar" />
        <copy file="slf4j-log4j12-1.6.1.jar" todir="solr.war.folder/WEB-INF/lib" />
        <copy file="log4j-1.2.16.jar" todir="solr.war.folder/WEB-INF/lib" />
        <jar destfile="solr_patched.war">
            <fileset dir="solr.war.folder" includes="**/**.*" />
        </jar>
    </target>

</project>

Вы должны иметь соответствующие jar-файлы для API sl4j в папке, которую вы называете сценарием ...

log4j.xml может быть размещен вне войны в соответствующей папке контейнера приложения.

...