Log4j - multiplos appenders II, o retorno

4 respostas
Luca

Olá

Estou com um problema parecido com o do smota em http://www.guj.com.br/forum/viewtopic.php?t=12950&highlight=log4j

"smota":
to precisando de um help pra configurar meu log4j.properties ...

Eu quero que o root não log nada, posso configura-lo para FATAL, certo?

Também quero, isto é, principalmente não quero meu log junto com o log do Struts.

"smota":
Entao o programa vai usar diversos processos e cada um vai escrever pra um arquivo de log ... fiz o log pra usar o nome do processo e nao a classe.

Como fica a configuração? eu não cheguei numa configuração que funcionasse ....

Também não consegui!

"smota":
Meu log4j.properties está assim:
log4j.rootLogger=FATAL, A1

log4j.appender.A1 = org.apache.log4j.varia.NullAppender

# Log  p1 (processo 1)
log4j.logger.p1=INFO
log4j.appender.p1=org.apache.log4j.RollingFileAppender
log4j.appender.p1.layout= org.apache.log4j.PatternLayout
log4j.appender.p1.file=c:/integracao/logs/integracao.log
log4j.appender.p1.layout.ConversionPattern=[%d{dd/MM/yyyy HH:mm:ss}] [%-5p] - %m%n
e faço
Log log = LogFactory.getLog("p1");
.... mas não sai nada em P1.
Meu caso é um só pouquinho diferente. Criei um logger para o pool de conexões e outro para o resto da aplicaçãp. Escrevi o log4j properties assim:
# Sistema XPTO
# Configuração global de logging para o Struts e etc.
log4j.rootLogger=DEBUG, fileglobal
log4j.logger.br.org.xpto.system.jdbc.ConnectionBroker=DEBUG, fileconpool
log4j.logger.br.org.xpto.system.log.Log4jLogger=DEBUG, filexptolog

log4j.additivity.br.org.xpto.system.jdbc.ConnectionBroker=false
log4j.additivity.br.org.xpto.system.log.Log4jLogger=false


#Neste appender só devem sair os logs do Struts
log4j.appender.fileglobal=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileglobal.File=d://xpto//logs//xpto-global.log

log4j.appender.fileglobal.DatePattern='.'yyyy-MM-dd

#log4j.appender.fileglobal.MaxFileSize=1024KB
#log4j.appender.fileglobal.MaxBackupIndex=5
log4j.appender.fileglobal.layout=org.apache.log4j.PatternLayout
log4j.appender.fileglobal.layout.ConversionPattern=%5p %d{dd MMM HH:mm:ss} [%t] %c - %m%n 


#Neste appender só devem sair os logs do Pool de conexões
log4j.appender.fileconpool=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileconpool.File=d://xpto-dev//logs//xpto-conpool.txt
log4j.appender.fileconpool.DatePattern='.'yyyy-MM-dd

#log4j.appender.fileconpool.MaxFileSize=1024KB
#log4j.appender.fileconpool.MaxBackupIndex=5
log4j.appender.fileconpool.layout=org.apache.log4j.PatternLayout
log4j.appender.fileconpool.layout.ConversionPattern=%5p %d{dd MMM HH:mm:ss} [%t] %c - %m%n 

#Neste appender só devem sair os logs geral da xpto
log4j.appender.filexptolog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.filexptolog.File=d://xpto-dev//logs//xpto.log
log4j.appender.filexptolog.DatePattern='.'yyyy-MM-dd

#log4j.appender.filexptolog.MaxFileSize=1024KB
#log4j.appender.filexptolog.MaxBackupIndex=5
log4j.appender.filexptolog.layout=org.apache.log4j.PatternLayout
log4j.appender.filexptolog.layout.ConversionPattern=%5p %d{dd MMM HH:mm:ss} [%t] %c - %m%n
Na inicialização do tomcat recebo estas gracinhas:
. . . . ..
22/10/2004 09:19:41 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
22/10/2004 09:19:41 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.0.25
22/10/2004 09:19:42 org.apache.catalina.core.StandardHost start
INFO: XML validation disabled

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: d:\xpto\logs\xpto-global.log (O sistema nao pode encontrar o caminho especificado)
        at java.io.FileOutputStream.openAppend(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:177)

. . . . . .

log4j:ERROR Either File or DatePattern options are not set for appender [fileglobal].
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: d:\xpto-dev\logs\xpto.log (O sistema nao pode encontrar o caminho especificado)
        at java.io.FileOutputStream.openAppend(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:177)

. . . . . . . .

log4j:ERROR Either File or DatePattern options are not set for appender [filexptolog].
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: d:\xpto-dev\logs\xpto-conpool.txt (O sistema nao pode encontrar o caminho especificado)
        at java.io.FileOutputStream.openAppend(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:177)

 . . . . . . . . .

log4j:ERROR Either File or DatePattern options are not set for appender [fileconpool].

Não sei onde estou comendo mosca mas alguém tem alguma sugestão, mandinga ou simpatia para usar mais de um appender com log4j ou evitar que meus logs se misturem com outros logs?

[]s
Luca

4 Respostas

smota

Ueba ...

Me parece que sua configuração está certinha.

De qualquer modo você tentou criar o log na mão pra primeira vez que você roda? (os arquivos mesmo - tenho uma leve lembrança que um dos Appenders não gostava de criar o arquivo do zero, mas não posso afirmar com certeza qual)

Eis a minha configuração que funciona:
log4j.rootLogger=INFO, root

#log4j.appender.root = org.apache.log4j.varia.NullAppender
log4j.appender.root = org.apache.log4j.ConsoleAppender
log4j.appender.root.layout= org.apache.log4j.PatternLayout
log4j.appender.root.layout.ConversionPattern=[%d{dd/MM/yyyy HH:mm:ss}] [%-5p] - %m%n

# Log p1
log4j.logger.p1=INFO, p1
log4j.appender.p1=org.apache.log4j.RollingFileAppender
log4j.appender.p1.file=c:/integracao/logs/integracao.log
log4j.appender.p1.layout= org.apache.log4j.PatternLayout
log4j.appender.p1.layout.ConversionPattern=[%d{dd/MM/yyyy HH:mm:ss}] [%-5p] - %m%n

Quando eu peço o log pra p1 ele vai pro arquivo, caso contrário fica só na tela (ou no limbo com o NullAppender) ....

Pelo que vi na sua configuração também está assim ....

[]s

Luca

Olá

Já tinha passado por esta etapa de erro pela falta do arquivo. Criei os caras na mão.

Mas vou mudar a minha configuração aproveitando suas idéias. Obrigado!

[]s
Luca

dreamspeaker

Ressuscitando esse tópico das cinzas (nada como uma busca antes de perguntar), existe alguma maneira de logar no appender SEM logar no root?

Na verdade, dois logs distintos, sem hierarquia?

Valeu!

rissato

Olá, estou com esse mesmo problema:

log4j:ERROR setFile(null,true) call failed. java.io.FileNotFoundException: log\test.log (Acesso negado) at java.io.FileOutputStream.openAppend(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:177) at java.io.FileOutputStream.<init>(FileOutputStream.java:102) ... Vcs conseguiram resolver? Fiz uma busca no fórum antes de sair postando e acabei achando esse aqui. No meu caso, o JasperReport que está usando o log4j. Obrigado.

Criado 22 de outubro de 2004
Ultima resposta 27 de out. de 2006
Respostas 4
Participantes 4