Coloquei o log4j no meu caminho de construção, mas recebo a seguinte mensagem quando executo meu aplicativo:
log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
O que esses avisos significam? Qual é o appender aqui?
Respostas:
Esta breve introdução ao log4j guia é um pouco antiga, mas ainda é válida.
Esse guia fornecerá algumas informações sobre como usar registradores e anexos.
Para começar, você tem duas abordagens simples que você pode adotar.
O primeiro é apenas adicionar esta linha ao seu método principal:
A segunda abordagem é adicionar esse
log4j.properties
arquivo padrão (extraído do guia mencionado acima) ao seu caminho de classe:fonte
log4j.rootLogger=DEBUG, A1
é a linha que eu estava perdendo o tempo todo.Parece que você precisa adicionar o local do seu
log4j.properties
arquivo ao Caminho de Classe no Eclipse.Verifique se o seu projeto está aberto no Eclipse, clique no menu "Executar" na parte superior do Eclipse e clique no seguinte:
A mensagem de erro não deve mais aparecer.
fonte
Solução rápida:
adicione código à função principal :
crie um arquivo chamado log4j.properties em / path / to
fonte
Este é apenas um aviso.
Fixação
Isso ocorre quando os arquivos de configuração padrão
log4j.properties
elog4j.xml
não podem ser encontrados e o aplicativo não executa nenhuma configuração explícita.Para corrigir isso, basta criar / copiar
log4j.properties
oulog4j.xml
no seu local no caminho de classe (geralmente o mesmo que os arquivos jar).Opção java opcionalmente definido:
-Dlog4j.configuration=file:///path/to/log4j.properties
.Depuração
Para depuração, você pode tentar usar o
-Dlog4j.debug=true
parâmetroConfiguração de
log4j.properties
Exemplo de configuração de
log4j.properties
:Aqui está outro arquivo de configuração que usa vários anexadores:
Apache Solr
Se estiver usando o Solr , copie
<solr>/example/resources/log4j.properties
para um local no caminho de classe .A configuração de amostra
log4j.properties
do Solr é como:Veja também:
fonte
A maioria das respostas aqui sugeriu que o
log4j.properties
arquivo fosse colocado no local correto (para o projeto maven, ele deve estar localizado emsrc/main/resources
)Mas para mim, o problema é que o meu
log4j.properties
não está configurado corretamente. Aqui está um exemplo que funciona para mim. Você pode experimentá-lo primeiro.fonte
Como explicado anteriormente, existem 2 abordagens
O primeiro é apenas adicionar esta linha ao seu método principal:
A segunda abordagem é adicionar esse arquivo log4j.properties padrão ao seu caminho de classe:
Ao adotar a segunda abordagem, você precisa inicializar o arquivo corretamente, por exemplo.
Certifique-se de criar a pasta necessária para armazenar arquivos de log.
fonte
Você usa o
Logger
no seu código para registrar uma mensagem. OAppender
objeto é anexado aLogger
para gravar a mensagem em um destino específico. ExistemFileAppender
para gravar em arquivos de texto ouConsoleAppender
para gravar no console. Você precisa mostrar seu código da instalação do Logger e Appender para obter mais ajuda.leia o tutorial para entender melhor a interação do Logger e do Appender.
fonte
Verifique se o arquivo de propriedades foi definido corretamente. E, novamente, parece que o compilador não consegue encontrar o arquivo de propriedades, você pode definir como segue no pom (somente quando você usa o projeto maven).
fonte
Eu recebo o mesmo erro. Aqui está o problema que leva a essa mensagem de erro:
Crio alguns objetos que usam o Logger antes de configurar o log4j:
Solução: configure o log4j no início no método principal:
fonte
Eu acho que você deve entender onde o arquivo jar log4j ou o código Java procura os arquivos de configuração log4j.
src/main/resources/log4j.properties
é o caminho do Eclipse. Coloque-os em um local apropriado para que você não precise codificar o caminho absoluto no código.Leia meu artigo e exemplo de solução para esse http://askyourquestions.info/2016/03/27/how-to-see-where-the-log-is-logger-in-slf4j/
fonte
Outra razão pela qual isso pode acontecer (no RCP4) é que você está usando várias estruturas de log no seu arquivo de destino. Como exemplo, isso ocorrerá se você usar uma combinação de slf4j, log4j e ch.qos.logback.slf4j na guia de conteúdo dos arquivos de destino.
fonte
Adicione o seguinte como o primeiro código:
fonte
No meu caso, o erro foi a bandeira " aditividade ". Se for "falso" para o seu pacote de projeto raiz, os pacotes filhos não terão um appender e você verá o erro " appender not found ".
fonte
Eu enfrentei o mesmo problema ao tentar executar a classe de teste JUnit.
O problema foi resolvido depois que adicionei manualmente o arquivo log4j.properties na pasta src / test / resources.
A adição do código abaixo ao arquivo log4j.properties resolveu o problema:
fonte
Eu me deparei com esse problema ao tentar criar um jar executável com o maven no intellij 12. Aconteceu que, como o arquivo manifest do java não incluía um caminho de classe, o arquivo de propriedades log4j não pôde ser encontrado no nível raiz (onde o arquivo O arquivo jar foi executado a partir de.)
Para sua informação, eu estava obtendo o logger assim:
E pude fazê-lo funcionar com um arquivo pom que incluía isso:
fonte
Verifique se o seu projeto está aberto no Eclipse, clique no menu "Executar" na parte superior do Eclipse e clique no seguinte:
Corre
Executar configurações
Caminho de classe (guia)
Entradas do usuário
adicione jar à direita
adicionar arquivo jar log4j
Aplique
Corre
A mensagem de erro não deve mais aparecer.
fonte
O motivo pode ser a falta da palavra
static
em alguns:Se eu tornar o registrador o campo da instância, estou recebendo exatamente este aviso:
O que é pior, o aviso não aponta para
ProcessorTest
onde o erro está, mas para uma classe absolutamente diferente (Remetente) como fonte de problemas. Essa classe tem o conjunto correto de criador de logs e não precisa de alterações! Poderíamos procurar o problema há séculos!fonte
Eu enfrentei o mesmo problema ao usar o log4j2. Meu problema é causado pelo uso de biblioteca dependente incorreta:
Em vez disso, devo usar:
No meu caso, tenho um log4j2.xml definido no meu diretório "resources" e especificado para usá-lo por:
fonte
O Log4J exibe esta mensagem de aviso quando o código Java do Log4j está pesquisando para criar uma primeira linha de log no seu programa.
Neste momento, o Log4j faz 2 coisas
log4j.properties
arquivolog4j.properties
Se
log4J
não encontrar olog4j.properties
arquivo ou se o aplicativo declarado emlog4j.rootlogger
não estiver definido em outro lugar nolog4j.properties
arquivo, a mensagem de aviso será exibida.CUIDADO: o conteúdo do arquivo Propriedades deve estar correto.
O conteúdo a seguir NÃO está correto
porque o
file
appender é declarado em LOWER-CASE nalog4j.rootlogger
instrução e definido na instrução log4j.appender usando UPPER-CASE!Um arquivo correto seria
Se MAVEN for usado, você deverá colocar os arquivos log4j.properties
src/main/resources
E iniciar uma construção MAVEN.O arquivo Log4j.properties é então copiado na
target/classes
pasta.O Log4J usa o
log4j.properties
arquivo que encontroutarget/classes
!fonte
Eu tive esse problema também. Esqueci de marcar o diretório de recursos no IntelliJ IDEA
fonte
Se você estiver usando o Eclipse e esse problema aparecer do nada depois que tudo funcionou bem antes, tente ir
Project - Clean - Clean
.fonte
Não foi possível encontrar minha instalação do Eclipse
log4j.properties
ao executar testes JUnit a partir do Eclipse, mesmo que o arquivo estivesse localizado emsrc/test/resources
.O motivo foi que o Eclipse (ou o conector m2e ) não copiou o conteúdo da
src/test/resources
pasta de saída esperadatarget/test-classes
- a causa principal foi que nas propriedades do projeto em Java Build Path -> guia Source -> pastas de origem no caminho de construção -> src / teste / recursos , de alguma forma houve umaExcluded: **
entrada. Eu removi essa entrada excluída .Como alternativa, eu poderia ter copiado manualmente
src/test/resources/log4j.properties
paratarget/test-classes/log4j.properties
.fonte
Se
log4j.properties
realmente estiver no caminho de classe, você está usando o Spring Boot para criar um arquivo WAR para implantação em um servidor de aplicativos, está omitindo umweb.xml
arquivo a favor da configuração automática do Spring Boot e não está recebendo nenhuma mensagem de log, precisa explicitamente configure o Log4j. Supondo que você esteja usando o Log4j 1.2.x:fonte
Talvez adicione o projeto relevante que contém log4j no caminho de construção do java, eu adiciono o mahout_h2o quando encontrei esse problema em um projeto do mahout usando o eclipse, ele funciona!
fonte
se você trabalha em conjunto com muitos projetos, pode enfrentar um problema de estilo.
* você precisa ter um arquivo lof4j.properties e esse arquivo está incluído nas propriedades de log de outro projeto.
* Ao lado de você pode tentar colocar os arquivos de propriedades log4j no caminho src quando o projeto é executado, o Linux OS, as bibliotecas de outros projetos e os arquivos log4.properties podem estar em uma pasta em um local no caminho de classe.
fonte
Primeira importação:
Em seguida, adicione o código abaixo ao método principal:
Crie um arquivo no caminho para e adicione o código abaixo a esse arquivo.
fonte
A solução neste site funcionou para mim https://crunchify.com/java-how-to-configure-log4j-logger-property-correctly/ . Agora não vejo nenhum aviso do log4j
Coloquei isso em um arquivo log4j.properties que coloquei em src / main / resources
fonte
Primeiro de tudo: Crie um arquivo log4j.properties
Coloque-o em src / main / resources /
Depois disso, use estas 2 dependências:
É necessário adicionar esta dependência final ao arquivo POM:
fonte
Considere o argumento Dlog4j.configuration da JVM log4j
Em geral:
Inclua o argumento da JVM que aponta o arquivo de configuração log4j. A sintaxe é a seguinte:
Uma amostra de uma linha de comando real é exatamente como a seguir:
Para usuários do IntelliJ IDE:
Dicas:
1. Os usuários do IDE Eclipse encontrarão uma abordagem equivalente
2.Para o editor de configuração de execução / depuração, é muito provável que, no início dos tempos, seu arquivo executável específico não esteja lá. Dependendo do tamanho do projeto em que você está trabalhando, pode ser desagradável navegar pelos diretórios para encontrá-lo. É menos trabalhoso se você apenas executar / executar o arquivo (clique em reproduzir) uma vez antes de continuar executando / depurar a configuração, independentemente do resultado da execução.
3. Preste atenção ao seu diretório de trabalho, caminhos relativos e caminho de classe.
fonte
No java eclipse, copie seu conf_ref para a pasta conf.
fonte