Tres duvidas no Log4J

4 respostas
A

estou com tres duvidas no log4j, tres coisas que tentei fazer e nao consegui e nao achei nada na internet explicando…

como faço pro log4j salvar logs em arquivos diferentes? por exemplo, quero salva uma hora no a.log outra hora no b.log, algo assim:

logger.info(esse vai pro a.log);



logger.info(esse vai pro b.log);

em linha de codigo eu indico pra onde esse log vai

alem disso, tenho um log4j.xml que configura as caracteristicas do a.log, preciso de outro pro b.log? (eles tem caracteristicas diferentes, tanto de nomeclatura como de virada de data)

como faço pra capturar todo System.out.print(…) que é dado na aplicacao e jogar como STDOUT no log4j?
tipo jboss e tal fazem…

quando eu abro um procedimento em uma thread, tudo que eu logo nela com o log4j nao é logado… parece que cria outra instancia do logger e nao loga no logger que estou usando até entao…
se eu passar a instancia do logger na thread funciona, mas fica feio pra kct
como faço isso? log4j nao é thread safe?

acho que é isso por enqto
valeu povo

4 Respostas

ricardolecheta

Olá

log4j.rootLogger=debug,stdout

log4j.logger.test.business=debug,testLog

log4j.additivity.rootLogger=false
log4j.additivity.test.business=false

#----------------------------------------------------------------------------
# System.Out
#----------------------------------------------------------------------------
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

#----------------------------------------------------------------------------
# Log para classes do pacote "test.business"
#----------------------------------------------------------------------------
log4j.appender.testLog=org.apache.log4j.RollingFileAppender
log4j.appender.testLog.File=./logs/arquivo.log
log4j.appender.testLog.layout=org.apache.log4j.PatternLayout
log4j.appender.testLog.layout.ConversionPattern==%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.testLog.MaxFileSize=512KB
log4j.appender.testLog.MaxBackupIndex=5
#----------------------------------------------------------------------------

Veja na linha: log4j.logger.test.business=debug,testLog

Ela diz que todas as classes do pacote “test.business” que usarem o log4j vão enviar o log para o “testLog” appender, que por sua vez grava no arquivo.log… O resto por default fica vai direto para o System.out, isto foi definido na primeira linha: “log4j.rootLogger=debug,stdout”…

Depois para usar o log4j nas suas classes basta fazer assim:

private static Logger log = Logger.getLogger(SuaClasse.class);

e no log4j.properties vc diz que a classe X manda para o arquivo Y… ou como eu fiz, todas as classes do pacote test.business logam para o arquivo.log

A

valeu
consegui aqui, vou configurar direitinho, mas parece que deu certo já
as duvidas 1 e 3 ja foram resolvidas

agora resta a 2… como faço pra capturar todos os System.out.print… dado na aplicacao e jogo como console no log4j?

valeu ricardo

Paulo_Silveira

método setOut na classe System. passa pra ele um PrintStream que escreve no seu logger.

A

valeu paulo
deu certo

Criado 28 de maio de 2005
Ultima resposta 29 de mai. de 2005
Respostas 4
Participantes 3