Log4j - Gravar arq num diretório específico

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á!

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

[quote=gigicantador]Costumo usar:

[code]

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
[/code][/quote]

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!

[quote=cnunes][quote=gigicantador]Costumo usar:

[code]

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
[/code][/quote]

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!

[/quote]
Pessoal,

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

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…

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

Assim fica relativo ao diretorio de execução

[quote=fabiofalci][quote=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!

[/quote]

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

Assim fica relativo ao diretorio de execução[/quote]

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!

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!

[quote=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![/quote]

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

[quote=fabiofalci][quote=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![/quote]

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[/quote]

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).

[quote=fabiofalci][quote=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…

[/quote]

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).[/quote]

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…

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

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

acho que resolve o problema de vcs!