GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Erro ao gerar log com LOG4J em aplicação java

java
desenvolvimento
programação
netbeans
swing
Tags: #<Tag:0x00007fa9ccb14130> #<Tag:0x00007fa9ccafffa0> #<Tag:0x00007fa9ccaffe60> #<Tag:0x00007fa9ccaffd20> #<Tag:0x00007fa9ccaffbe0>

#1

Olá pessoal estou pesquisando aqui no forum as ainda não encontrei alguma solução para o meu problema, fiz uma aplicação desktop que gera alguns arquivos txt, e estou colocando alguns logs para seguir os passos dela.
Ao executar pela IDE tudo roda perfeitamente, mas quando tento executar a aplicação pelo .jar são lançados alguns erros e o arquivo de log não é criado.
abaixo o erro que é lançado no cmd quando rodo apenas pelo .jar

log4j:ERROR Could not read configuration file [C:\Users\meuPc\src\logs\lo
g4j.properties].
java.io.FileNotFoundException: C:\Users\meuPc\src\logs\log4j.properties (
O sistema não pode encontrar o caminho especificado)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurato
r.java:316)
        at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.
java:342)
        at br.com.geradoraccera.util.Util.configuraLog4j(Util.java:68)
        at br.com.geradoraccera.start.GerarConsulta.main(GerarConsulta.java:26)
log4j:ERROR Ignoring configuration file [C:\Users\meuPc\src\logs\log4j.pr
operties].

Abaixo o meu arquivo log4j.properties

#### Usando 2 appenders, 1 para logar no console, outro para um #arquivo, 
#### ou seja, mostrará o log no console e salvará em um arquivo
log4j.rootCategory=INFO,stdout,fileOut
# Imprime somente mensagens com 'priority' WARN ou mais alto para o #logger
#lembrando a ordem: DEBUG - INFO - WARN - ERROR - FATAL
log4j.category.br.com.geradoraccera.log=INFO

#### O primeiro appender escreve no console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
### Pattern que mostra o nome do arquivo e numero da linha, porem #sem data e hora
log4j.appender.stdout.layout.ConversionPattern=[(%F:%L)%d{dd/MM/yyyy HH:mm:ss:SS}] %m%n

#### O segundo appender escreve em um arquivo e faz um bkp ao #atingir o max 
log4j.appender.fileOut =org.apache.log4j.RollingFileAppender
log4j.appender.fileOut.File=c:\\resultado\\MyLog.txt
log4j.appender.fileOut=org.apache.log4j.RollingFileAppender 
log4j.appender.fileOut.layout=org.apache.log4j.PatternLayout
### Controla o tamanho maximo do arquivo
log4j.appender.fileOut.MaxFileSize=1MB
### Faz backup dos arquivos de log (apenas 1)
log4j.appender.fileOut.MaxBackupIndex=2
#####este formato esta em ingles: 2011-04-24 e imprime o nro da #linha L
log4j.appender.fileOut.layout.ConversionPattern=[(%F:%L)%d{dd/MM/yyyy HH:mm:ss:SS}] %m%n

Antes de começar a gerar os logs eu estou usando este método para inicializar o log4j
o arquivo properties esta salvo no meu projeto geradorTxt\src\logs, criei um pacote e coloquei o arquivo properties lá.

public static void configuraLog4j() {
        BasicConfigurator.configure();
        PropertyConfigurator.configure(diretorioRaiz + "\\src\\logs\\log4j.properties");
     

    }

podem me ajudar?


#2

pelo que entendi nos testes que fiz aqui, ao rodar via .jar ele não pega o caminho correto do log4j.properties, mas rodando pela IDE ele econtra o caminho normalmente.


#3

Consegui resolver o problema, alterei o método onde eu inicializo o log4j e salvo o log4j.properties no mesmo diretorio onde vou executar o .jar.
O diretorio raiz ja localiza todo o caminho.

public static void configuraLog4j() {
        String diretorioRaiz = System.getProperty("user.dir");
        System.out.println("DIRETORIO RAIZ: "+diretorioRaiz);
        BasicConfigurator.configure();
     
         PropertyConfigurator.configure(diretorioRaiz + "\\log4j.properties");
     

    }