logo

Log4j versus SLF4J

SLF4J (Simple Logging Fa�ade para java) é uma API projetada para fornecer acesso genérico a muitas estruturas de registro, sendo log4j uma delas.

É basicamente uma camada de abstração. Não é uma implementação de registro. Isso significa que se você estiver escrevendo uma biblioteca e usar SLF4J, poderá fornecer essa biblioteca para outra pessoa usar e ela poderá escolher qual implementação de log usar com SLF4J, por exemplo, log4j ou a API de log Java. Ele é usado para evitar que os aplicativos dependam de diferentes APIs de log, assim como usam bibliotecas que dependem delas.

Porém, elaboramos a diferença entre Log4J e SLF4J que merece apenas uma linha de resposta. ou seja, a pergunta em si está errada. SLF4J e Log4J são diferentes ou não são componentes semelhantes. Conforme o nome especificado, SLF4J é uma fachada de registro simples para java. Não é um componente de registro e nem mesmo faz o registro real. É apenas uma camada de abstração para um componente de registro subjacente.

processo android acore continua parando

No caso de Log4j , é um componente de registro e executa o registro instruído a fazer. Portanto, podemos dizer que SLF4J e Log4J são logicamente duas coisas diferentes.

Log4j versus SLF4J

Agora, tudo que você precisa selecionar é qual estrutura de log você precisa usar em tempo de execução. Para isso, você precisará incluir dois arquivos jar:

método java compareto
  • Arquivo jar de ligação SLF4J
  • Arquivos jar da estrutura de registro desejados

Por exemplo, para usar log4j em seu projeto, você precisará incluir os arquivos jar abaixo:

  • slf4j-log4j12-1.7.12.jar
  • log4j-1.2.17.jar

Depois de colocar os dois arquivos jar no caminho de classe do aplicativo, o SLF4J irá detectá-lo automaticamente e começar a usar o log4j para processar as instruções de log com base na configuração fornecida no arquivo de configuração log4j.

Por exemplo, o código abaixo você pode escrever no arquivo de classe do seu projeto:

 import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info('Hello World'); } } 

Por que o SLF4J é melhor que o Log4J?

É sempre difícil preferir um entre SLF4J e Log4j. Se você tiver escolha, eu sugiro você; a abstração de registro é sempre preferível à estrutura de registro. Se você usar uma abstração de log, SLF4J em particular, podemos migrar para qualquer estrutura de log necessária no momento da implantação, sem optar por dependência única.

como acessar fotos do icloud

A seguir estão os motivos bons o suficiente para escolher SLF4J em vez de Log4j:

  • É sempre melhor usar abstração.
  • SLF4J é uma biblioteca de código aberto ou biblioteca interna que a torna independente de qualquer implementação de log específica, o que significa que não há necessidade de gerenciar várias configurações de log para várias bibliotecas.
  • SLF4J fornece registro baseado em espaço reservado, o que melhora a legibilidade do código removendo verificações como isInforEnabled(), isDebugEnabled(), etc.
  • Ao usar o método de registro do SLF4J, adiamos o custo de construção de mensagens de registro (string), até que você precise delas, o que é eficiente tanto em termos de CPU quanto de memória.
  • Como o SLF4J usa menos strings temporárias, significa menos trabalho para o coletor de lixo, o que significa melhor rendimento e desempenho para seu aplicativo.

Então, essencialmente, o SLF4J não substitui o log4j; ambos trabalham juntos. Ele remove a dependência do log4j do seu aplicativo e facilita sua substituição no futuro pela biblioteca mais capaz.