How to get log4j working with openfire 3.7.0?

Greetings,

I have been experimenting with openfire, and got hit by a non functional log4j system.

  1. unpacked the generic tarball in ~/openfire, and started the service “cd ~/openfire/bin; ./openfire start”.

  2. ran the setup procedure over http on port 9090

  3. played around, server appears to be working - but no logs accessible …

Which prompted me to dig in …

First ~/openfire/bin/nohup.out is empty. Looks good.

Then ~/openfire/logs/ contains three files : stderr.out (empty) and stdoutt.log (a couple of lines about server start) and stderror.log :

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: /logs/info.log (No such file or directory)
        at java.io.FileOutputStream.openAppend(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:177)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:102)
        at org.apache.log4j.FileAppender.setFile(FileAppender.java:290)
        at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:194)
        at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:164)
        at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:257)
        at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:285)
        at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:171)
        at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:184)
        at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:502)
        at org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:471)
        at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:921)
        at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:790)
        at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:696)
        at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:471)
        at org.apache.log4j.LogManager.<clinit>(LogManager.java:125)
        at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:243)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)
        at org.jivesoftware.openfire.XMPPServer.<clinit>(XMPPServer.java:148)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at java.lang.Class.newInstance0(Class.java:355)
        at java.lang.Class.newInstance(Class.java:308)
        at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:113)
        at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:58)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
        at com.install4j.runtime.Launcher.main(Unknown Source)

The same error repeats for debug.log, info.log, warn.log and error.log.

I suppose this relates to ~/openfire/lib/log4j.xml, for which the relevant snippet is:

<appender name="info-out" class="org.apache.log4j.RollingFileAppender">
     <param name="File" value="${openfireHome}/logs/info.log" />
     <!- ... ->
</appender>

I checked the process invocation using “ps” (ps aux | grep openfireHome), and openfire appears to have been launched with the correct property value (ie -DopenfireHome=/home/me/openfire/bin/…/ ).

I am considering editing the XML file by hand to get it working as a workaround, but I wonder if I missed a setup step, or is this a glitch plain and simple.

All advice welcome and appreciated.