将log4j.properties添加到war文件中(在Solr应用程序中)

时间:2012-02-20 09:48:37

标签: solr glassfish log4j

我在登录Solr时遇到问题。我希望它不要在标准输出上写一切(我的意思是glassfish server.log)。我希望它使用log4j并将其消息写入单独的文件。我已经创建了log4j.xml文件,但我不知道是否可以将它添加到.war文件中。我已经尝试了外部log4j.xml文件并设置了JVM选项-Dlog4j.configuration = file:/ {path_to_file},但它只能部分工作。我在glassfish上安装了一些其他应用程序,所有应用程序都开始写入此文件。任何帮助赞赏。

1 个答案:

答案 0 :(得分:2)

你也必须将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>

你必须在你调用脚本的文件夹中拥有sl4j api的相应jar文件...

log4j.xml可以放在相应的app容器文件夹中的war之外。