Qual API para log usar? Log4j ou outra?

9 respostas
A

Eu quero utilizar uma API/Framework para log, especificamente log em uma aplicação web.
Vi muito material e recomendação para utilização do Log4j, realmente vale a pena? queria opiniões mais recentes aqui do fórum, visto que as coisas que eu vi era de 3 anos atrás.

Caso tiver outras dicas por favor fale.

Até mais.

9 Respostas

M

é extremamente raro alguém usar outra api para log… eu mesmo nunca vi.

existe uma api de log na api padrão mas pessoalmente nunca vi um projeto utilizando-a…

J

A minha sugestão é utilizar uma api agregadora como slf4j. Desta forma é muito simples alternar entre diversas outras (como a log4j inclusive).

Daí basta usar assim:

private final Logger logger = LoggerFactory.getLogger(getClass());

// e nos seus metodos

try{
  logger.trace("mensagem com parametro {}", parametro);
  logger.debug("mensagem sem parametro");
  logger.info("mensagem {} com {} muitos {} parametros {}", new Object[]{parametro1, parametro2, parametro3, parametro4});
}catch(Exception e){
  logger.error("mensagem com stack trace", e);
}
V

Eu geralmente uso a própria Java Logging API:
http://download.oracle.com/javase/1.4.2/docs/guide/util/logging/overview.html

Ela é simples e não depende de .jars externos.

S

ViniGodoy:
Eu geralmente uso a própria Java Logging API:
http://download.oracle.com/javase/1.4.2/docs/guide/util/logging/overview.html

Ela é simples e não depende de .jars externos.

Você sabe dizer se a API padrão do java suporta MDC ? Para mim essa é a única coisa que torna libraries como log4j interessantes.

J

Sinceramente eu acho a vale mais a pena aprender a utilizar uma ferramenta de gestão de dependências do que ficar limitado aos recursos nativos q os pacotes oferecem… É por causa disso q muitas vezes vemos por aí projetos novos que continuam amarrados a tipos de design duvidoso como java.util.Date e java.util.Calendar.

De uma estudada no maven, por exemplo. E nunca mais se preocupe com jars externos :slight_smile:

V

Creio que não.

V

jurado:
Sinceramente eu acho a vale mais a pena aprender a utilizar uma ferramenta de gestão de dependências do que ficar limitado aos recursos nativos q os pacotes oferecem… É por causa disso q muitas vezes vemos por aí projetos novos que continuam amarrados a tipos de design duvidoso como java.util.Date e java.util.Calendar.

De uma estudada no maven, por exemplo. E nunca mais se preocupe com jars externos :)

Eu conheço bem o maven.
Mas não acho a java logging api de design duvidoso. É realmente uma API simples, desenhada para resolver problemas de log mais simples.
Como meu foco é geralmente aplicações desktop, dificilmente precisei de mais do que isso.

Não acho que a api do java substitua a log4j no caso de log em servidor web.

E, claro, se precisa de datas, sou o primeiro a falar contra o Calendar e o Date. :slight_smile:

C

Também utilizo a log4j.
Mas li recentemente q a nova versão da logback estava mais rapida, não cheguei a testar, mas a propaganda é bem interessante, segue o link para os interessados http://logback.qos.ch/reasonsToSwitch.html
ela também é baseada na api SLF4J o que como o jurado falou facilita a migração entre apis de log de acordo com a necessidade.

J

Concordo, Vinni. Já usei bastante a logging api. Na verdade comentei apenas o argumento de que ele não necessita de jars externos.

Tenho visto ultimamente (especialmente em alguns projetos em outras equipes aqui no trabalho) uma certa “preguiça” em aprender novas ferramentas (como joda-time e log4j) com um argumento muito parecido com “não gosto de poluir o projeto com outros jars”. Na grande maioria dos casos isso nao justifica a perda de design ou até performance que essas ferramentas podem agregar.

Para aplicações simples, java.util.logging é muito mais q suficiente!

Criado 13 de novembro de 2011
Ultima resposta 17 de nov. de 2011
Respostas 9
Participantes 6