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?
log4j.rootLogger=debug,stdoutlog4j.logger.test.business=debug,testLoglog4j.additivity.rootLogger=falselog4j.additivity.test.business=false#----------------------------------------------------------------------------# System.Out#----------------------------------------------------------------------------log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.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.RollingFileAppenderlog4j.appender.testLog.File=./logs/arquivo.loglog4j.appender.testLog.layout=org.apache.log4j.PatternLayoutlog4j.appender.testLog.layout.ConversionPattern==%d{ABSOLUTE} %5p %c{1}:%L - %m%nlog4j.appender.testLog.MaxFileSize=512KBlog4j.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: