Log4j - Gravar arq num diretório específico

13 respostas
C

Olá amigos,

Estou testando o log4j.
Criei um arquivo log4j.properties no path da minha aplicação.
Está funcionado direitinho, consigo gravar o arquivo de log.
Só que o arquivo de log é gravado na pasta bin do tomcat (estou usando o tomcat do netbeans).
Eu queria gravar o arquivo de log numa pasta dentro da minha aplicação.
Minha dúvida é em relação a linha abaixo.

log4j.appender.fileAuditoria.File = meuLog.log

Como referenciar uma pasta da minha aplicação?

Segue abaixo o meu log4j.properties

log4j.logger.AUDITORIA_APLICACAO=INFO, fileAuditoria
log4j.appender.fileAuditoria = org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileAuditoria.File = meuLog.log
log4j.appender.fileAuditoria.DatePattern='.'yyyy-MM-dd
log4j.appender.fileAuditoria.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAuditoria.layout.ConversionPattern=%5p %d{dd MMM HH:mm:ss} [%t] %c - %m%n

Se alguém puder ajudar…

Agradeço desde já!

13 Respostas

G

Costumo usar:

# Set root logger level to DEBUG and its only appender to fileOut.
log4j.rootLogger=DEBUG, fileOut

#ordem: DEBUG - INFO - WARN - ERROR - FATAL

# fileOut is set to be a ConsoleAppender.
log4j.appender.fileOut=org.apache.log4j.ConsoleAppender

# fileOut uses PatternLayout.
log4j.appender.fileOut.layout=org.apache.log4j.PatternLayout

# Print the date in ISO 8601 format
#log4j.appender.fileOut.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

#log4j.appender.fileOut.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.fileOut.layout.ConversionPattern=%p %t %c - %m%n
log4j.appender.fileOut.layout.ConversionPattern=%d %-5p - %m - [%c] %n

# Pattern to output the caller's file name and line number.
#log4j.appender.fileOut.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.fileOut=org.apache.log4j.RollingFileAppender
log4j.appender.fileOut.File=D:/log/aplicacaoX/x_debug_.log
log4j.appender.fileOut.MaxFileSize=1000KB
# Keep one backup file
log4j.appender.fileOut.MaxBackupIndex=5
C
gigicantador:
Costumo usar:
# Set root logger level to DEBUG and its only appender to fileOut.
log4j.rootLogger=DEBUG, fileOut

#ordem: DEBUG - INFO - WARN - ERROR - FATAL

# fileOut is set to be a ConsoleAppender.
log4j.appender.fileOut=org.apache.log4j.ConsoleAppender

# fileOut uses PatternLayout.
log4j.appender.fileOut.layout=org.apache.log4j.PatternLayout

# Print the date in ISO 8601 format
#log4j.appender.fileOut.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

#log4j.appender.fileOut.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.fileOut.layout.ConversionPattern=%p %t %c - %m%n
log4j.appender.fileOut.layout.ConversionPattern=%d %-5p - %m - [%c] %n

# Pattern to output the caller's file name and line number.
#log4j.appender.fileOut.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.fileOut=org.apache.log4j.RollingFileAppender
log4j.appender.fileOut.File=D:/log/aplicacaoX/x_debug_.log
log4j.appender.fileOut.MaxFileSize=1000KB
# Keep one backup file
log4j.appender.fileOut.MaxBackupIndex=5

Olá, gigicantador ,

Da forma que vc mencionou funciona.
log4j.appender.fileOut.File=D:/log/aplicacaoX/x_debug_.log
Mas eu gostaria que o caminho para a criação do arquivo não fosse absoluto. Preciso apontar esse caminho de forma dinâmica. A minha grande dificuldade está em apontar a pasta raíz da minha apliação através do meu arquivo log4j.properties.

Alguém tem alguma idéia de como fazer isso?

Muito obrigada!

C
cnunes:
gigicantador:
Costumo usar:
# Set root logger level to DEBUG and its only appender to fileOut.
log4j.rootLogger=DEBUG, fileOut

#ordem: DEBUG - INFO - WARN - ERROR - FATAL

# fileOut is set to be a ConsoleAppender.
log4j.appender.fileOut=org.apache.log4j.ConsoleAppender

# fileOut uses PatternLayout.
log4j.appender.fileOut.layout=org.apache.log4j.PatternLayout

# Print the date in ISO 8601 format
#log4j.appender.fileOut.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

#log4j.appender.fileOut.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.fileOut.layout.ConversionPattern=%p %t %c - %m%n
log4j.appender.fileOut.layout.ConversionPattern=%d %-5p - %m - [%c] %n

# Pattern to output the caller's file name and line number.
#log4j.appender.fileOut.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.fileOut=org.apache.log4j.RollingFileAppender
log4j.appender.fileOut.File=D:/log/aplicacaoX/x_debug_.log
log4j.appender.fileOut.MaxFileSize=1000KB
# Keep one backup file
log4j.appender.fileOut.MaxBackupIndex=5

Olá, gigicantador ,

Da forma que vc mencionou funciona.
log4j.appender.fileOut.File=D:/log/aplicacaoX/x_debug_.log
Mas eu gostaria que o caminho para a criação do arquivo não fosse absoluto. Preciso apontar esse caminho de forma dinâmica. A minha grande dificuldade está em apontar a pasta raíz da minha apliação através do meu arquivo log4j.properties.

Alguém tem alguma idéia de como fazer isso?

Muito obrigada!


Pessoal,

Alguém tem mais alguma sugestão???

R

Não tenho certeza, mas não tem como passar isso por dentro da aplicação em vez de cetar pelo arquivo properties? Se sim, fica fácil via programação vc pegar o caminho da sua aplicação…

F
log4j.appender.fileOut.File=log/fis.log

Assim fica relativo ao diretorio de execução

C

fabiofalci:
cnunes:

Da forma que vc mencionou funciona.

log4j.appender.fileOut.File=D:/log/aplicacaoX/x_debug_.log

Mas eu gostaria que o caminho para a criação do arquivo não fosse absoluto.
Preciso apontar esse caminho de forma dinâmica.
A minha grande dificuldade está em apontar a pasta raíz da minha apliação através do meu arquivo log4j.properties.

Alguém tem alguma idéia de como fazer isso?

Muito obrigada!

log4j.appender.fileOut.File=log/fis.log

Assim fica relativo ao diretorio de execução

Olá fabio falci,

Testei a sua sugestão.
Mas desta forma ele cria uma pasta log com o arquivo fis.log no diretório raíz da minha máquina.

Vou verificar a sugestão anterior.

Obrigada!

C

Olá Renato,

Não faço a menor idéia de como passar via programação.
A princípio, deixei o caminho absoluto, mas vou continuar pesquisando.

Se alguém tiver alguma sugestão, será muito bem vinda! :slight_smile:

Muito obrigada!

F

cnunes:

Olá fabio falci,

Testei a sua sugestão.
Mas desta forma ele cria uma pasta log com o arquivo fis.log no diretório raíz da minha máquina.

Vou verificar a sugestão anterior.

Obrigada!

Sim, entao o teu diretório de execução é a raiz da sua maquina.
Tenta ir num diretório diferente, por exemplo
/tmp/
e execute a sua aplicação de lá, vai ser criado então
/tmp/log/fis.log

C

fabiofalci:
cnunes:

Olá fabio falci,

Testei a sua sugestão.
Mas desta forma ele cria uma pasta log com o arquivo fis.log no diretório raíz da minha máquina.

Vou verificar a sugestão anterior.

Obrigada!

Sim, entao o teu diretório de execução é a raiz da sua maquina.
Tenta ir num diretório diferente, por exemplo
/tmp/
e execute a sua aplicação de lá, vai ser criado então
/tmp/log/fis.log

Bom dia fabio,

Desculpa, mas eu não entendi o que vc disse.

" Tenta ir num diretório diferente, por exemplo
/tmp/
e execute a sua aplicação de lá, "

Ou melhor, como ir para um diretório diferente?
Desculpa, mas é que não tenho muita experiência…

F

Como tu está executando a aplicação? linha de comando? icone?

Se linha de comando, tente assim:

> cd /tmp
> java -jar ....

Ou seja teu diretório de execução é o /tmp/ entao o dir de log vai estar la.

Agora se for algum ícone, do windows por exemplo, tem q ir nas propriedades dele e
o diretório de execução é o ‘Iniciar em:’ (windows em portugues).

C

fabiofalci:
cnunes:

Bom dia fabio,

Desculpa, mas eu não entendi o que vc disse.

" Tenta ir num diretório diferente, por exemplo
/tmp/
e execute a sua aplicação de lá, "

Ou melhor, como ir para um diretório diferente?
Desculpa, mas é que não tenho muita experiência…

Como tu está executando a aplicação? linha de comando? icone?

Se linha de comando, tente assim:

> cd /tmp
> java -jar ....

Ou seja teu diretório de execução é o /tmp/ entao o dir de log vai estar la.

Agora se for algum ícone, do windows por exemplo, tem q ir nas propriedades dele e
o diretório de execução é o ‘Iniciar em:’ (windows em portugues).

Olá fabio,

Desculpa, esqueci de falar.
A minha aplicação é web.
Como a minha aplicação vai rodar num servidor,
eu tenho que apontar o caminho para a pasta que armazenará os log.
Como falei anteriormente, preciso que o caminho seja dinâmico.
Pois se o caminho da pasta ficar estático, e por algum acaso eu tiver que mudar a mnha aplicação de servidor,
vou ter que modificar o caminho na mão.

Muito obrigada pela sua ajuda…

R

Estou com o mesmo problema, alguém tem uma solução ?

K
log4j.appender.fileOut.File=${user.home}/errors.log

acho que resolve o problema de vcs!

Criado 9 de outubro de 2008
Ultima resposta 27 de nov. de 2012
Respostas 13
Participantes 6