title: Trouble enabling Logging/Debugging for Orbeon Development
body: <p>After following the instructions on the following pages:</p>
  
  <p><a href="http://wiki.orbeon.com/forms/doc/developer-guide/xforms-logging" rel="nofollow">http://wiki.orbeon.com/forms/doc/developer-guide/xforms-logging</a></p>
  
  <p><a href="http://wiki.orbeon.com/forms/doc/developer-guide/configuration-properties" rel="nofollow">http://wiki.orbeon.com/forms/doc/developer-guide/configuration-properties</a></p>
  
  <p>I have generated my log4j.xml and properties-local.xml files according the the instructions on the pages above and inserted them into the <strong>$TOMCAT_HOME/webapps/orbeon/WEB-INF/resources/config</strong> directory. </p>
  
  <p>After restarting tomcat and building a few forms with the builder, I have been unable to locate any log information. There is no orbeon.log file on my system and no orbeon information in my tomcat log files either. Additionally I have run tomcat in debug mode to use remote debugging in IntelliJ and receive no output to the console. </p>
  
  <p>I'm building the webapp myself using IntelliJ with the latest on <a href="https://github.com/orbeon/orbeon-forms/tree/4.0.0.m10-ce" rel="nofollow">https://github.com/orbeon/orbeon-forms/tree/4.0.0.m10-ce</a>
  currently commit 51f0e8f1b396336c612c16655e39abe6b807214b</p>
  
  <p>I'm using Ubuntu 12.04 and running orbeon in Tomcat6.</p>
  
  <p>I'm very new to orbeon development so I'm hoping the problem is something simple.
  Any help would be greatly appreciated. Thanks.</p>
  
  <p><strong>Update:</strong></p>
  
  <p>I tried setting up the logger for an absolute path with no results, here is my current configuration (except with actual absolute paths).</p>
  
  <p>log4j.xml</p>
  
  <p></p>
  
  <pre><code>&lt;!-- This is the standard log appender to the console (System.out) --&gt;
  &lt;appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"&gt;
      &lt;param name="Target" value="System.out"/&gt;
      &lt;param name="Encoding" value="UTF-8"/&gt;
      &lt;layout class="org.apache.log4j.PatternLayout"&gt;
          &lt;param name="ConversionPattern" value="%d{ISO8601} %-5p %c{1} %x - %m%n"/&gt;
      &lt;/layout&gt;
      &lt;filter class="org.apache.log4j.varia.LevelRangeFilter"&gt;
          &lt;param name="LevelMin" value="debug"/&gt;
      &lt;/filter&gt;
  &lt;/appender&gt;
  
  &lt;!-- Logging to a single file, typically used in development when you don't want
       to be dealing with multiple files generated by the RollingFileAppender.
       See: http://logging.apache.org/log4j/docs/api/org/apache/log4j/FileAppender.html --&gt;
  &lt;appender name="SingleFileAppender" class="org.apache.log4j.FileAppender"&gt;
      &lt;param name="File" value="/Absolute_Path_To_$TOMCAT_HOME/logs/orbeon.log"/&gt;
      &lt;param name="Append" value="false" /&gt;
      &lt;param name="Encoding" value="UTF-8"/&gt;
      &lt;layout class="org.apache.log4j.PatternLayout"&gt;
          &lt;param name="ConversionPattern" value="%d{ISO8601} %-5p %c{1} %x - %m%n"/&gt;
      &lt;/layout&gt;
  &lt;/appender&gt;
  
  &lt;!-- Logging to a rolling files. Every time the file exceeds a certain size, a backup
       is created and the file used for logging is truncated.
       See: http://logging.apache.org/log4j/docs/api/org/apache/log4j/RollingFileAppender.html --&gt;
  &lt;appender name="RollingFileAppender" class="org.apache.log4j.RollingFileAppender"&gt;
      &lt;param name="File" value="../logs/orbeon.log"/&gt;
      &lt;param name="MaxFileSize" value="5MB"/&gt;
      &lt;param name="maxBackupIndex" value="200"/&gt;
      &lt;param name="Append" value="false" /&gt;
      &lt;param name="Encoding" value="UTF-8"/&gt;
      &lt;layout class="org.apache.log4j.PatternLayout"&gt;
          &lt;param name="ConversionPattern" value="%d{ISO8601} %-5p %c{1} %x - %m%n"/&gt;
      &lt;/layout&gt;
  &lt;/appender&gt;
  
  &lt;!-- XForms engine activity, see http://wiki.orbeon.com/forms/doc/developer-guide/xforms-logging --&gt;
  
  &lt;category name="org.orbeon.oxf.xforms.processor.XFormsServer"&gt;
      &lt;priority value="debug"/&gt;
  &lt;/category&gt;
  
  &lt;!-- To enable logging for any of the sub-systems below, copy that section outside of the comment block --&gt;
  
  &lt;category name="org.orbeon.oxf.properties.Properties"&gt;
      &lt;priority value="debug"/&gt;
  &lt;/category&gt;
  
  &lt;category name="org.orbeon.oxf.processor.pipeline.TeeProcessor"&gt;
      &lt;priority value="debug"/&gt;
  &lt;/category&gt;
  
  &lt;category name="org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor"&gt;
      &lt;priority value="debug"/&gt;
  &lt;/category&gt;
  
  &lt;category name="org.orbeon.oxf.processor.generator.URLGenerator"&gt;
      &lt;priority value="debug"/&gt;
  &lt;/category&gt;
  
  &lt;category name="org.orbeon.oxf.processor.xmldb.XMLDBProcessor"&gt;
      &lt;priority value="debug"/&gt;
  &lt;/category&gt;
  
  &lt;category name="org.orbeon.oxf.processor.sql.SQLProcessor"&gt;
      &lt;priority value="debug"/&gt;
  &lt;/category&gt;
  
  &lt;category name="org.orbeon.oxf.processor.PageFlowControllerProcessor"&gt;
      &lt;priority value="debug"/&gt;
  &lt;/category&gt;
  
  &lt;category name="org.orbeon.oxf.processor.generator.RequestGenerator"&gt;
      &lt;priority value="debug"/&gt;
  &lt;/category&gt;
  
  &lt;category name="org.orbeon.oxf.webapp.OPSSessionListener"&gt;
      &lt;priority value="info"/&gt;
  &lt;/category&gt;
  
  &lt;category name="org.orbeon.oxf.webapp.OPSServletContextListener"&gt;
      &lt;priority value="info"/&gt;
  &lt;/category&gt;
  &lt;!----&gt;
  
  &lt;!-- Prevent extra display of eXist paging activity --&gt;
  &lt;category name="org.exist.storage.btree.Paged"&gt;
      &lt;priority value="warn"/&gt;
  &lt;/category&gt;
  
  &lt;category name="org.exist.storage.DBBroker"&gt;
      &lt;priority value="warn"/&gt;
  &lt;/category&gt;
  
  &lt;category name="org.exist.storage.BrokerPool"&gt;
      &lt;priority value="warn"/&gt;
  &lt;/category&gt;
  
  &lt;!-- You decide here which one of the loggers listed above you want to use. --&gt;
  &lt;root&gt;
      &lt;priority value="info"/&gt;
      &lt;!--&lt;appender-ref ref="ConsoleAppender"/&gt;--&gt;
      &lt;!--&lt;appender-ref ref="ChainsawAppender"/&gt;--&gt;
      &lt;appender-ref ref="SingleFileAppender"/&gt;
      &lt;!--&lt;appender-ref ref="RollingFileAppender"/&gt;--&gt;
  &lt;/root&gt;
  </code></pre>
  
  <p></p>
  
  <p>properties-local.xml</p>
  
  <pre><code>&lt;properties xmlns:xs="http://www.w3.org/2001/XMLSchema"
              xmlns:oxf="http://www.orbeon.com/oxf/processors"&gt;
      &lt;property as="xs:NMTOKENS" name="oxf.xforms.logging.debug" 
          value="document model submission control event action analysis server server-body html submission-details submission-body"/&gt;
  &lt;/properties&gt;
  </code></pre>
  
  <p><strong>Update2</strong></p>
  
  <p>Following some of the suggestions, I've ensured that write permissions is not the issue. I've also tried using the ConsoleAppender and still got no output, but the webapp also crashed after a few minutes and I found this exception in the tomcat log files.</p>
  
  <p>WARNING: Cannot serialize session attribute orbeon.resources.dynamic.cb088a8a347ad72a00012a9d8569b5e9c5dd6381 for session 29AE194AA69E0D51C111F5035C219E7B</p>
  
  <pre><code>java.io.NotSerializableException: scala.collection.JavaConversions$MapWrapper
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
      at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
      at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1585)
      at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1015)
      at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:528)
      at org.apache.catalina.session.StandardManager.unload(StandardManager.java:469)
      at org.apache.catalina.session.StandardManager.stop(StandardManager.java:678)
      at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4882)
      at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:936)
      at org.apache.catalina.startup.HostConfig.undeployApps(HostConfig.java:1359)
      at org.apache.catalina.startup.HostConfig.stop(HostConfig.java:1330)
      at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:326)
      at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
      at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1098)
      at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1110)
      at org.apache.catalina.core.StandardEngine.stop(StandardEngine.java:468)
      at org.apache.catalina.core.StandardService.stop(StandardService.java:604)
      at org.apache.catalina.core.StandardServer.stop(StandardServer.java:788)
      at org.apache.catalina.startup.Catalina.stop(Catalina.java:662)
      at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:706)
  </code></pre>