Essa separação é de extrema importância para facilitar a administração e análise do log de servidores, nos quais temos, em uma única instância, várias aplicações.
O procedimento descrito abaixo faz uso do TCLFilter para fazer a separação baseada no contexto da aplicação, e não no category (que não funciona como esperado caso tenhamos, em nosso servidor, múltiplas aplicações com classes compartilhadas).
A configuração é bastante simples e rápida de ser realizada:
Suponha que temos 2 aplicações: app1.ear e app2.ear, nas quais queremos separar os logs em: app1.log e app2.log respectivamente.
Edite o arquivo ${jboss.server.home.dir}/conf/jboss-log4j.xml e coloque as seguintes informações:
<appender name="App1Log" class="org.apache.log4j.FileAppender">
<errorHandler
class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Append" value="false"/>
<param name="File"
value="${jboss.server.home.dir}/log/app1.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
<filter class="org.jboss.logging.filter.TCLFilter">
<param name="AcceptOnMatch" value="true"/>
<param name="DeployURL" value="app1.ear"/>
</filter>
</appender>
<appender name="App2Log" class="org.apache.log4j.FileAppender">
<errorHandler
class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Append" value="false"/>
<param name="File"
value="${jboss.server.home.dir}/log/app2.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
<filter class="org.jboss.logging.filter.TCLFilter">
<param name="AcceptOnMatch" value="true"/>
<param name="DeployURL" value="app2.ear"/>
</filter>
</appender>
...
<root>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
<appender-ref ref="App1Log"/>
<appender-ref ref="App2Log"/>
</root>
No caso de a aplicação estar empacotada em um arquivo war (o que fará com que o JBoss AS expanda o arquivo na pasta: ${jboss.server.home.dir}/tmp/deploy),
devemos utilizar o valor warname-exp.war para o parâmetro DeployURL.
Ex:
<!-- para arquivo ear: app1.ear -->
<param name="DeployURL" value="app1.ear">
<!-- para arquivo war: app1.war -->
<param name="DeployURL" value="app1-exp.war"/>
e não apenas:
<param name="DeployURL" value="app1.war"/>
Uma outra maneira de se obter esse comportamento está descrita neste post do meu amigo George Gastaldi.
Mais detalhes sobre a configuração de log no JBoss AS podem ser vistos aqui.