Log4J - Log em arquivos separados

Ola,

Estou procurando uma maneira de escrever um arquivo de log separado do log da minha aplicação.

Ex: para sistema 1 eu tenho um arquivo log1, eu quero escrever log2 sem que as informações escritas em log2 apareçam em log1.

Eu consegui escrever os dois arquivos utilizando dois appenders no log4j.properties, mas os dados do log aparecem nos dois arquivos.

Alguém sabe como fazer isso?

Poste seu arquivo de configuração. Acredito que esteja mapeando os dois appenders para a mesma categoria de log.

A solução para isso é bem simples: basta mapear o appender do arquivo log2 para a categoria que desejar ter o log nesse arquivo.

Se estiver usando JBoss, dê uma olhada nisto:

https://community.jboss.org/wiki/SeparatingApplicationLogs

Não é JBoss, é uma aplicação stand alone.

[code]log4j.rootCategory=DEBUG,A1,testlog

#Appender and its layout for A1
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %n%m%n
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.File=/opt/error/debug_log.log
log4j.appender.A1.Append=true

log4j.appender.testlog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.testlog.layout=org.apache.log4j.PatternLayout
log4j.appender.testlog.layout.ConversionPattern=%m
log4j.appender.testlog.Threshold=ERROR
log4j.appender.testlog.File=/opt/error/error_log.log
log4j.appender.testlog.Append=true[/code]

É assim que está o meu arquivo de log. Só não entendi oque você falou da categoria, eu posso separar por categoria também?

Não só pode como deve. Como você não diz qual categoria quer em cada appender, qualquer chamada aos métodos de log vão parar na categoria geral (rootCategory, que você definiu na primeira linha).

No seu caso os dois appenders estão configurados para a categoria geral, por isso aparece log neles.

Aqui vai um complemento pro seu arquivo:

log4j.logger.categoria.1=INFO, A1
log4j.logger.categoria.2=INFO, testlog

Você pode separar mais ainda, usando os prefixos dos pacotes da aplicação pra separar ela do log geral:

log4j.logger.br.com.minha.app=INFO, A1

E lembre-se de remover do rootCategory um dos appenders pra não duplicar o log.

Eu fiz a separação por categoria, mas assim ainda duplica o log. Quando uso logger default a aplicação escreve no primeiro arquivo, já quando uso o logger passando a string categori.2 ele escreve nos dois arquivos.

Posta como ficou sua configuração e como você tá instanciando o objeto Logger.

Cara a demanda era questão de urgência, eu acabei utilizando outro artificio para gerar este log, mas eu fiquei com curiosidade sobre esse comportamento do ExtJS eu vou implementar um teste com isso e posto as dúvidas aqui.