log4j

como faço para separar erros do log4j em um arquivo qualquer e outros erros deixar no console
tipo:

logger.error(“ocorreu um erro”); // para arquivo

e.printStackTrace(); // para o console

toda vez que faço o erro do log4j ir para o arquivo, ele não mostra mais nada no console.

vc pode fazer isso usando diferentes appenders para cada log level.
por exemplo

logger.error("ocorreu um erro"); //aqui cai num arquivo logger.fatal(e.getMessage()); // aqui cairia em outro arquivo ou no console

EDIT: passei um link errado, perai q vo pegar o certo… :smiley:

a, agora sim:

[code]

Set root logger level to DEBUG and appender to A1 and A2.

log4j.rootCategory=DEBUG,A1,A2

#Appender and its layout for A1
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.File=./LogonApplication_Debug.log
log4j.appender.A1.Append=true

#Appender and its layout for A2
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %
log4j.appender.A2.Threshold=ERROR
log4j.appender.A2.File=./LogonApplication_Error.log
log4j.appender.A2.Append=true[/code]

nesse exemplo, o log de debug cai em um arquivo e o log de erro cai em outro. vc só vai ter que trocar pra um cair no console e o outro no arquivo que vc deseja.

[]'s

ja tentei dessa forma tbm, o problema eh q nao aparece nada no console, so no arquivo

log4j.properties

log4j.rootCategory=ERROR, stdout, fileout  

# O primeiro appender escreve para o console  

log4j.appender.stdout=org.apache.log4j.ConsoleAppender  

# O padrão para apresentação do conteúdo (layout)  

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F\:%L) - %m%n  

# O segundo appender escreve para um arquivo  

log4j.appender.fileout=org.apache.log4j.RollingFileAppender  

log4j.appender.fileout.File=error.log  

# Controla o tamanho máximo do arquivo de log  

log4j.appender.fileout.MaxFileSize=500KB  

# Arquiva arquivos de log (somente um arquivo de backup)  

log4j.appender.fileout.MaxBackupIndex=1 

# O padrãoo para apresentação do conteúdo (layout)  

log4j.appender.fileout.layout=org.apache.log4j.PatternLayout  

log4j.appender.fileout.layout.ConversionPattern=(%F\:%L) %p %t %c - %m%n 

alguem sabe se eh necessario usar isso?

usei so a a parte para aparecer no console mas nao ta aparecendo nada. Alquem sabe o q pode ser?

[code]# Set root logger level to DEBUG and appender to A1 and A2.
log4j.rootCategory=DEBUG,A1

#Appender and its layout for A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.Append=true [/code]

alquem sabe que erro eh este?

ERROR: invalid console appender config detected, console stream is looping

entao robson…
como vc está declarando a classe Logger na sua classe? esse erro parece ser relacionado a isso…

tenta fazer o seguinte tb… Coloca o Target nos properties do seu appender:

log4j.appender.A1.Target=System.out  

tentei mas nao deu tbm.

na verdade é so eu colocar isso PropertyConfigurator.configure(NOMEDACLASSE.getClass().getClassLoader().getResource("log4j.properties"));

que ele não coloca mais nada no console, nem mesmo System.out.println(“blablabla”);

Sem isso funciona, aparece no console, porem nao gera o arquivo mesmo depois de ter configurado no log4j.properties para gerar o arquivo.

somente se eu colocar o codigo citado acima que ele gera o arquivo. Mas neste caso nada no console.
É como se ele nao encontrasse este log4j.properties, pois sem ele tbm funciona, aparece tudo no console. Mas eu precisa gerar os erros do log4j em um aquivo e outros erros no console mesmo.

[quote=robsonsm]tentei mas nao deu tbm.

na verdade é so eu colocar isso PropertyConfigurator.configure(NOMEDACLASSE.getClass().getClassLoader().getResource("log4j.properties"));

que ele não coloca mais nada no console, nem mesmo System.out.println(“blablabla”);

Sem isso funciona, aparece no console, porem nao gera o arquivo mesmo depois de ter configurado no log4j.properties para gerar o arquivo.

somente se eu colocar o codigo citado acima que ele gera o arquivo. Mas neste caso nada no console.
É como se ele nao encontrasse este log4j.properties, pois sem ele tbm funciona, aparece tudo no console. Mas eu precisa gerar os erros do log4j em um aquivo e outros erros no console mesmo.

[/quote]

Quer dizer que quando chama o log4j ele “rouba” o console para ele e nenhum System.out.println funciona mais?

exatamente.

as vezes me aparece este erro

ERROR: invalid console appender config detected, console stream is looping