Recentemente, decidi aprender a usar o logger log4j2. Baixei os arquivos jar necessários, criei uma biblioteca, um arquivo de configuração xml e tentei usá-lo. Infelizmente, recebo esta declaração no console (Eclipse):
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Este é o meu código de aula de teste:
package log4j.test;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Log4jTest
{
static final Logger logger = LogManager.getLogger(Logger.class.getName());
public static void main(String[] args) {
logger.trace("trace");
logger.debug("debug");
logger.info("info");
logger.warn("warn");
logger.error("error");
logger.fatal("fatal");
}
}
E meu arquivo de configuração xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration package="log4j.test"
status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="log4j.test.Log4jTest" level="trace">
<AppenderRef ref="Console"/>
</Logger>
<Root level="trace">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Eu tentei também com xml sem <Logger>
tags e especificação de pacote e em várias pastas / diretórios de pacotes, mas não ajudou. Agora meu log4j2.xml
arquivo está localizado diretamente na pasta do projeto no eclipse.
Respostas:
Este é um projeto Java Eclipse simples, sem maven etc? Nesse caso, você precisará colocar o
log4j2.xml
arquivo em umasrc
pasta para poder encontrá-lo no caminho de classe. Se você usar maven, coloque-o sobsrc/main/resources
ousrc/test/resources
fonte
sbt
olog4j2.xml
entrasrc/main/resources
também.Você precisa escolher uma das seguintes soluções:
fonte
-Dlog4j.configurationFile
era o que eu precisava, já que o projeto no qual estou trabalhando não é baseado no Maven. IncrívelEstava seguindo as documentações - Apache Log4j2 Configuratoin e Apache Log4j2 Maven na configuração de log4j2 com yaml. De acordo com a documentação, as seguintes dependências do maven são necessárias:
e
Apenas adicionar estes não pegava a configuração e sempre dava erro. A forma de depurar a configuração adicionando
-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=TRACE
ajudou na visualização dos logs. Mais tarde, tive que baixar o código-fonte usando Maven e a depuração ajudou a entender as classes dependentes do log4j2. Eles estão listados emorg.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory
:Adicionar mapeamento de dependência para
jackson-dataformat-yaml
não terá as duas primeiras classes. Portanto, adicione ajackson-databind
dependência para fazer a configuração do yaml funcionar:Você pode adicionar a versão referindo-se à
Test Dependencies
seção dolog4j-api
item de versão do Repositório MVN . Por exemplo, para a versão 2.8.1 do log4j-api, consulte este link e localize ajackson-databind
versão.Além disso, você pode usar o código Java abaixo para verificar se as classes estão disponíveis no classpath:
fonte
Além do que Tomasz W escreveu, ao iniciar seu aplicativo você pode usar as configurações:
para obter a maioria dos problemas de configuração.
Para obter detalhes, consulte as perguntas frequentes do Log4j2: Como depuro minha configuração?
fonte
O Eclipse nunca verá um arquivo até que você force uma atualização do IDE. É um recurso! Portanto, você pode colocar o arquivo em todo o projeto e o Eclipse irá ignorá-lo completamente e lançar esses erros. Clique em atualizar na visualização do projeto Eclipse e então funciona.
fonte
No meu caso, eu tive que colocá-lo na pasta bin do meu projeto, mesmo o fato de que meu classpath está definido para a pasta src. Não tenho ideia do porquê, mas vale a pena tentar.
fonte