dúvida + log4j

3 respostas
K

Olá.. estou com uma dúvida quanto a execução do logger em uma classe:

Um exemplo simples:

import org.apache.log4j.Logger;

public class TesteLog{

   String nome = "GUJ";   

   private static final Logger logger = Logger.getLogger(TesteLog.class);

   logger.info(nome);

}

Se minha classe não tiver um método main o meu log será criado ?

Alguém pode me explicar isso melhor ?

Obrigado!

3 Respostas

Thiago_Senna

Vc não precisa iniciar ele no seu método main…

MinhaClasse {

private static final Logger log = Logger.getLogger(MinhaClasse.class);

public MinhaClasse() {
//...
}

public static void main(String[] args) {

log.debug("Hello World!");

}

}
K
Thiago Senna:
Vc não precisa iniciar ele no seu método main...
MinhaClasse {

private static final Logger log = Logger.getLogger(MinhaClasse.class);

public MinhaClasse() {
//...
}

public static void main(String[] args) {

log.debug("Hello World!");

}

}

OK.. mas o que eu quero saber é se por exemplo, eu utilizar o log4j em um servlet... como o meu arquivo com os logs vai ser gerado ?

public class Teste extends HttpServlet{

    String nome = "GUJ";   
 
    private static final Logger logger = Logger.getLogger(TesteLog.class);
 
    logger.info(nome);

}

No código acima, o arquivo contento o log info será criado ?

Eu tenho o seguinte código lendo as configurações de um properties funcionando blz...

package log;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import java.net.URL;

public class Teste {

   private static Logger logger = Logger.getLogger(Teste.class);
   
    public static void main(String args[]) {
        
      String resource = "/log/config.properties";
      URL configFileResource = Teste.class.getResource(resource);
      PropertyConfigurator.configure(configFileResource);        
        
      logger.debug("Aqui é algum DEBUG");
      logger.info("Aqui é algum INFO");
      logger.warn("Aqui é algum WARN");
      logger.error("Aqui é algum ERROR");
      logger.fatal("Aqui é algum FATAL");
      
   }
}

A pergunta é: como posso fazer o mesmo em um servlet ???

:wink:

Thiago_Senna
public class Teste extends HttpServlet{
 
     String nome = "GUJ";   
  
     private static final Logger logger = Logger.getLogger(TesteLog.class);
  
     logger.info(nome);
 
 }

JavaRJ, este código não poderá funcar, isso por que logger.info(nome) deveria estar dentro de um método!
Por isso me confundi no posto acima... eu só olhei de relance!

Em um servlet vc poderá iniciar atributo do log4j igual ao do programa que vc citou como exemplo! Atributos estáticos são criados no momento que a aplicação levanta!

Vc pode optar por ao invés de usar um atributo estático, usar um atributo não estático para cada Servlet!

Ainda mais, vc pode criar uma super classe que declare o atributo log do log4j, e as classes que estendam ela herdam este atributo, assim vc não precisará sair criando log4j em tudo quanto é canto! :wink:

Abraços!
Thiago

Criado 12 de julho de 2005
Ultima resposta 12 de jul. de 2005
Respostas 3
Participantes 2