Jboss – Application Logging in different file.

Sometimes we need to separate the log of each application running on the same server into different files.

On Jboss AS 7 or a newer version you can achieve that very easy.
You have only to modify the logging subsystem section inside the standalone.xml or domain.xml file.

First we define a file handler for the app.

<periodic-rotating-file-handler name="FILE_APP">                
   <formatter>
     <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
   </formatter>
   <file relative-to="jboss.server.log.dir" path="applog.log"/>
   <suffix value=".yyyy-MM-dd"/>
   <append value="true"/>
</periodic-rotating-file-handler>

Then define all the packages names you want to log to the file, like this

 <logger category="com.MY-APP-PACKAGE" use-parent-handlers="false">
     <level name="INFO"/>
     <handlers>
        <handler name="FILE_APP"/>
     </handlers>
 </logger>  

If use-parent-handlers=»true» the log will be on both files, server.log and applog.log

Finally add the handler to the root-logger.

<root-logger>
  <level name="INFO"/>
  <handlers>
    <handler name="CONSOLE"/>
    <handler name="FILE"/>
    <handler name="FILE_APP"/>
  </handlers>
</root-logger>

The complete logging subsystem section

        <subsystem xmlns="urn:jboss:domain:logging:1.2">
            <console-handler name="CONSOLE">
                <level name="INFO"/>
                <formatter>
                    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                </formatter>
            </console-handler>
            <periodic-rotating-file-handler name="FILE">
                <formatter>
                    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                </formatter>
                <file relative-to="jboss.server.log.dir" path="server.log"/>
                <suffix value=".yyyy-MM-dd"/>
                <append value="true"/>
            </periodic-rotating-file-handler>
            <periodic-rotating-file-handler name="FILE_APP">                
                <formatter>
                    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                </formatter>
                <file relative-to="jboss.server.log.dir" path="applog.log"/>
                <suffix value=".yyyy-MM-dd"/>
                <append value="true"/>
            </periodic-rotating-file-handler>
            <logger category="com.arjuna">
                <level name="WARN"/>
            </logger>
            <logger category="org.apache.tomcat.util.modeler">
                <level name="WARN"/>
            </logger>
            <logger category="sun.rmi">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb.config">
                <level name="ERROR"/>
            </logger>            
            <logger category="com.MY-APP-PACKAGE" use-parent-handlers="false">
                <level name="INFO"/>
                <handlers>
                    <handler name="FILE_APP"/>
                </handlers>
            </logger>         
            <root-logger>
                <level name="INFO"/>
                <handlers>
                    <handler name="CONSOLE"/>
                    <handler name="FILE"/>
                    <handler name="FILE_APP"/>
                </handlers>
            </root-logger>
        </subsystem>