Logging usando SL4J, Jakarta Commons Logging, log4j para bibliotecas de terceiros e meu próprio código

StackOverflow https://stackoverflow.com/questions/462566

Pergunta

Eu tenho algumas perguntas sobre o registo, mais especificamente sobre a sua criação e ter certeza que ele funciona.

O projeto que estou fazendo vai usar Wicket , Spring e Hibernate . Eu sei que Wicket eo Hibernate usa Logging simples fachada para Java ( SL4J ) e que a Primavera está usando o componente de log do Apache Commons .

Será que eles vão co-existir feliz? Eu pensei que eu iria usar log4j juntamente com tanto SL4J eo componente de log do apache commons , você acha que é uma boa idéia?

Posso configurar todos eles para os dados de registro de saída em um arquivo comum? Ou devo usar arquivos separados? Ou devo guardar as mensagens de log no banco de dados? (Eu prefiro não, como eu encontrar grepping etc em arquivos de texto bastante conveniente.)

Para a Primavera Eu acho que preciso de algum tipo de arquivo de configuração do Apache Commons Logging componente bem onde eu dirigi-lo a usar log4j?

Quando eu configurá-los Eu acho que para ver que tudo funciona eu definir o nível de registo para INFO como é bastante certo de que todos os três da saída enquadramentos algumas informações nesse modo? Ou há uma maneira ainda melhor para se certificar?

E minha última pergunta. No projeto que estou começando, você recomenda que eu uso SL4J para meus próprios fins de registro? (Eu pensei que eu iria usar log4j diretamente, mas isso foi antes de eu aprendi um pouco mais sobre o log e um monte de bibliotecas respeitáveis ??parecem escolher o caminho de uma ponte / fachada para as suas necessidades de registro. E se ele nos leva a flexibilidade sem adição custo não há nenhuma razão para não fazê-lo dessa maneira.)

Estou ansioso para ouvir mais de você sobre como você está fazendo o seu registro. É uma área nova para mim que eu estou ansioso para me aperfeiçoar na.

Foi útil?

Solução

Bem SLF4J é apenas uma fachada, como commons logging, o que significa que ainda precisa de algo mais ao trabalho. Eles permitem autores biblioteca para não forçar os usuários a ter biblioteca logging múltipla e configuração. Log4j e logback são libs madeireiras regulares.

aqui para mais informações.

SLF4J tem um commons logging ponte que você pode usar para substituir os commons logging biblioteca. Eu acho que o esquema não explicar muito bem a situação.

Agora, você só precisa usar slf4j-logj12.jar ter commons logging e uso slf4j log4j (ou qualquer outra coisa que você escolheu; btw, logback não precisa de uma biblioteca adicional para ser usado com slf4j) como um mecanismo de apoio .

aplicativo Você terá assim

  • jcl104-over-slf4j.jar (para commons Jacarta ponte de registro para slf4j)
  • slf4j.jar (para hibernate e outros para uso slf4j)
  • slf4j-logj12.jar (para slf4j ao uso log4j como um backend)
  • log4j.jar (para seu aplicativo para uso. Tudo de configuração também será feito aqui)

Outras dicas

Aqui está como redirecionar tudo para SLF4J:

  • commons-logging.jar remover do seu classpath. Se você estiver usando Maven e têm dificuldade para se livrar de commons-logging, consulte este .

  • jcl-over-slf4j.jar colocar no seu classpath (que vem na distribuição SLF4J). Este é um substituto que as classes imita do JCL, mas chamadas slf4j internamente. Isto irá cuidar da Primavera, e qualquer outra estrutura que usa JCL.

Conectar SLF4J ao seu backend favorito (Log4J, Logback ...) colocando slf4j-xxx.jar no classpath. Configurar o backend para registrar todas as categorias para um arquivo, e você está feito.

Quanto a usar SLF4J em sua aplicação, não é estritamente necessário. Bibliotecas como JCL e SLF4J foram originalmente concebidos para pessoas que escrevem bibliotecas e fazer não deseja bloquear seus clientes em uma estrutura de log particular.

PS: A propósito, JCL = Jakarta Commons Logging

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top