Depois de adicionar o log4j ao meu aplicativo, recebo a seguinte saída toda vez que executo meu aplicativo:
log4j: WARN Não foram encontrados anexos para o criador de logs (slideselector.facedata.FaceDataParser). log4j: WARN Inicialize o sistema log4j corretamente.
Parece que isso significa que um arquivo de configuração está ausente. Onde esse arquivo de configuração deve estar localizado e qual é um bom conteúdo inicial?
Estou usando java comum para desenvolver um aplicativo de desktop. Portanto, nenhum servidor web etc ...
configuration
log4j
Janusz
fonte
fonte
Respostas:
Log4j
por padrão, procura um arquivo chamadolog4j.properties
oulog4j.xml
no caminho de classe.Você pode controlar qual arquivo ele usa para se inicializar, definindo as propriedades do sistema conforme descrito aqui (procure a seção "Procedimento de inicialização padrão").
Por exemplo:
Fará com
log4j
que procure um arquivo chamado customName no caminho de classe.Se você estiver tendo problemas, acho útil ativar o log4j.debug:
Ele imprimirá no System.out muitas informações úteis sobre qual arquivo ele se inicializou, quais registradores / anexos foram configurados e como etc.
O arquivo de configuração pode ser um arquivo de propriedades java ou um arquivo xml. Aqui está uma amostra do formato do arquivo de propriedades retirado da página de documentação de introdução do log4j :
fonte
java -Dlog4j.configuration=customName
? Tentei Projeto / Preferências / Executar / Configurações de depuração, peguei algumas configurações, cliquei em Editar, guia Argumentos, argumentos da VM. O customName inclui uma extensão .xml?-Dlog4j.debug
podem ajudar a depurar sua configuração.Embora a configuração apropriada do log4j seja ótima para projetos "reais", você pode querer uma solução rápida e suja, por exemplo, se estiver apenas testando uma nova biblioteca.
Nesse caso, uma chamada para o método estático
configurará o log básico no console e as mensagens de erro desaparecerão.
fonte
Logger.getRootLogger().setLevel(Level.INFO);
Se você se livrar de tudo (por exemplo, se estiver em testes)
fonte
Conforme a página de perguntas frequentes do Apache Log4j :
Basicamente, o aviso Nenhum anexo foi encontrado para o criador de logs significa que você está usando o
log4j
sistema de registro, mas não adicionou nenhum anexo (como FileAppender, ConsoleAppender, SocketAppender, SyslogAppender etc.) ao seu arquivo de configuração ou o arquivo de configuração é ausência de.Existem três maneiras de configurar o log4j: com um arquivo de propriedades (
log4j.properties
), com um arquivo XML e através do código Java (rootLogger.addAppender(new NullAppender());
).log4j.properties
Se você possui um arquivo de propriedades presente (por exemplo, ao instalar o Solr), é necessário colocar esse arquivo no diretório do caminho de classe .
caminho de classe
Aqui estão algumas sugestões de comando no Linux como determinar seu valor do caminho de classe:
ou a partir de Java:
System.getProperty("java.class.path")
.XML do Log4j
Abaixo está um arquivo de configuração XML básico para log4j no formato XML:
Tomcat
Se você estiver usando o Tomcat, poderá colocar sua pasta
log4j.properties
em:/usr/share/tomcat?/lib/
ou/var/lib/tomcat?/webapps/*/WEB-INF/lib/
.Solr
Para referência, o
log4j.properties
arquivo padrão do Solr se parece com:Por que o log4j não pode encontrar meu arquivo de propriedades em um aplicativo J2EE ou WAR?
Veja também:
fonte
Você pode definir o local do seu log4j.properties de dentro do seu aplicativo java usando:
Mais informações estão disponíveis aqui: https://logging.apache.org/log4j/1.2/manual.html
fonte
import
declaração é sempre útil, pois a conclusão do código não é tão confiável.Encontre um log4j.properties ou log4j.xml on-line que possua um aplicativo raiz e coloque-o no caminho de classe.
registrará no console. Prefiro fazer logon em um arquivo para que você possa investigar posteriormente.
embora para aplicativos de log detalhado, 100 KB geralmente precisem ser aumentados para 1 MB ou 10 MB, especialmente para depuração.
Pessoalmente, configurei vários registradores e configurei o registrador raiz para avisar ou nível de erro em vez de depurar.
fonte
Outra maneira de fazer isso sem colocar o arquivo de propriedades no caminho de classe é definir a propriedade diretamente do código java. Aqui está o código de exemplo.
}
fonte
Você pode configurar o nível do log usando setLevel () .
Os níveis são úteis para definir facilmente o tipo de informação que você deseja que o programa exiba.
Por exemplo:
O conjunto de níveis possíveis é:
De acordo com o manual Logging Services
fonte
fonte
System.out
. O javadoc para o método não-args configure diz:Add a ConsoleAppender that uses PatternLayout using the PatternLayout#TTCC_CONVERSION_PATTERN and prints to System.out to the root category.
Para ativar
-Dlog4j.debug
, vou para Sistema, Configurações avançadas do sistema, Variáveis de ambiente e defino a variável do sistema_JAVA_OPTIONS
como-Dlog4j.debug
.fonte
No que você está desenvolvendo? Você está usando o Apache Tomcat?
Eu tenho propriedades como esta em um aplicativo Java meu.
fonte
Meu log4j foi corrigido pelo arquivo de propriedades abaixo:
fonte
Criei o arquivo log4j.properties na pasta resources ao lado do arquivo hibernate.cfg.xml e o preenchi com o texto abaixo:
agora eu me livrei de avisos e erros
fonte
Simplesmente, crie log4j.properties na pasta src / main / assembly. Dependendo se você deseja que as mensagens de log sejam mostradas no console ou no arquivo que você modificou. A seguir, mostramos suas mensagens no console.
fonte
Como explicado anteriormente, existem 2 abordagens
O primeiro é apenas adicionar esta linha ao seu método principal:
A segunda abordagem é incluir esse arquivo log4j.properties padrão em 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
Tente definir atributo de depuração no log4j: nó de configuração como true.
Ele imprime as informações conforme o arquivo de configuração é lido e usado para configurar o ambiente log4j. Você pode obter mais detalhes para resolver seu problema.
fonte
API de registro em log - O Java Logging API facilita o serviço e manutenção de software nas instalações do cliente, produzindo relatórios de registro adequados para análise por usuários finais, administradores de sistema, engenheiros de serviço de campo e equipes de desenvolvimento de software. As APIs de log capturam informações como falhas de segurança, erros de configuração, gargalos de desempenho e / ou bugs no aplicativo ou plataforma. O pacote principal inclui suporte para o fornecimento de registros de log formatados em texto sem formatação ou XML na memória, fluxos de saída, consoles, arquivos e soquetes. Além disso, as APIs de log são capazes de interagir com os serviços de log que já existem no sistema operacional host.
Pacote java.util.logging «Fornece as classes e interfaces dos principais recursos de log da plataforma Java.
Log4j 1.x «log4j é um popular utilitário de registro baseado em Java. Log4j é um projeto de código aberto baseado no trabalho de muitos autores. Ele permite que o desenvolvedor controle quais instruções de log são enviadas para vários locais usando Appenders [console, arquivos, banco de dados e email]. É totalmente configurável em tempo de execução usando arquivos de configuração externos.
Os arquivos de configuração podem ser gravados em XML ou no formato de propriedades Java (chave = valor).
Estrutura de tabela MySQL para tabela
logdata
fonte
A correção para mim foi colocar "log4j.properties" na pasta "src".
fonte
Se estivermos usando o wrapper de logon do apache commons sobre o log4j, precisamos ter os dois jars disponíveis no caminho de classe. Além disso,
commons-logging.properties
elog4j.properties/xml
deve estar disponível no caminho de classe.Também podemos passar a classe de implementação e o
log4j.properties
nome comoJAVA_OPTS
usando-Dorg.apache.commons.logging.Log=<logging implementation class name> -Dlog4j.configuration=<file:location of log4j.properties/xml file>
. O mesmo pode ser feito via configuraçãoJAVA_OPTS
no caso de aplicativo / servidor da web.Isso ajudará a externalizar propriedades que podem ser alteradas na implantação.
fonte
Essa é uma maneira alternativa de usar .yaml
Estrutura lógica:
Amostra:
Ref: LOG4J 2 CONFIGURAÇÃO: USANDO YAML
fonte
Para testes, uma maneira rápida e suja, incluindo a configuração do nível do log:
fonte
Solução Maven:
Me deparei com os mesmos problemas acima e, para uma solução inteligente, usei 2 dependências. Essa configuração é destinada apenas a testes rápidos se você quiser que um projeto simples esteja usando um criador de logs, com uma configuração padrão. Eu posso imaginar que você deseja criar um arquivo de configuração mais tarde, se precisar de mais informações e / ou ajustar seus próprios níveis de log.
fonte
Acabei de fazer isso e o problema foi corrigido.
Seguiu o blog abaixo
https://intellij-support.jetbrains.com/hc/en-us/community/posts/206875685-How-to-fix-log4j-WARN-console-messages-when-running-an-Application-inside-IntelliJ- Idéia
Mas aqui ele diz como abaixo
Para corrigir isso, basta inserir o seguinte arquivo log4j.resources na pasta main / resources do seu projeto
em vez de criar log4j.resources, crie log4j.properties. Clique com o botão direito do mouse em Recurso em IntelliJ -> Novo -> Pacote de Recursos - Apenas nomeie-o como log4j
fonte
Se você está tendo esse erro no Intellij IDEA, mesmo após adicionar o
log4j.properties
oulog4j.xml
arquivo na sua pasta de teste de recursos, talvez o Intellij IDEA ainda não esteja ciente da existência do arquivo.Portanto, depois de adicionar o arquivo, clique com o botão direito do mouse no arquivo e escolha Recompilar log4j.xml .
fonte