Introdução ao Log4J

Gostaria de saber como fazer logging da sua aplicação Java? Quer mesmo? Então leia este artigo escrito por Caio Filipini, em que ele mostra como é fácil fazer logging usando a biblioteca Log4J, da Apache Software Foundation.

AEEEEEEE!! :smiley: :smiley:

Parabens, Caio, ficou mto legal :slight_smile:

Mandou bem.

Muito bom o artigo, claro e conciso, acho que o Log4J é uma das API’s mais difíceis de se usar de forma adequada.
Parabéns! :smiley:

Valeu pessoal! :smiley:

Espero que o artigo ajude a alguém… Não sou especialista em Log4J, apenas trilhei o caminho que usei pra aprender a usá-la, e isso talvez facilite a vida de alguém. :wink:

[]'s

Taí,gostei…derrepente tem uma vaguinha pro Log4j no meu projeto final…Jah tava começando a fazer via java.util.logging…
Bom artigo Caio! :wink:

Valeu, Ironlynx! :smiley: :wink:

como sou muito newbie em java, alguma coisa tinha q dar errado…

como faço pra implementar o exemplo ?

pq quando tento compilar este treco:

import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.BasicConfigurator;

public class LoggingTest {
static Logger logger = Logger.getLogger(LoggingTest.class);

public static void main(String[] args) {
    BasicConfigurator.configure();

    logger.setLevel(Level.INFO);
    logger.debug(“Isso nao vai aparecer...”);
    logger.info(“Inicializando...”);
    
    try {
        throw new Exception(“Loga esse, Log4J!”);
    } catch (Exception e) {
        logger.error(“Oops, deu erro: “ + e.getMessage());
    }

    logger.info(“Finalizando...”);
}    

}

Ele diz que não encontra as classes que estão no import…
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.BasicConfigurator;

O que devo fazer ??
copiar algum .jar, pra dentro do meu jdk ?
e como irei ver o resultado do logger.info ?
preciso fazer alguma chamada ?

façam contato via icq ou msn.

grato,
Jovan

Deixe os .jar do Log4J em um lugar “vísivel” para sua aplicação. Pode ser CLASSPATH, pode ser no mesmo diretório em que estiver o seu .class .

seguinte,
seguindo o tutorialzinho de log4j, coninuo encontrando o seguinte problema:

br/com/streamworks/projetos/controleremoto/aplicacao/testes/LoggingTest.java [13:1] package org.apache.log4j does not exist
import org.apache.log4j.Logger;
^
br/com/streamworks/projetos/controleremoto/aplicacao/testes/LoggingTest.java [14:1] package org.apache.log4j does not exist
import org.apache.log4j.Level;
^
br/com/streamworks/projetos/controleremoto/aplicacao/testes/LoggingTest.java [15:1] package org.apache.log4j does not exist
import org.apache.log4j.BasicConfigurator;

ou seja, ele não encotra o pacotre do log4j

daonde vem este org.apache.log4j ???

isso ta parecendo, que devo colocar o log4j dentro do diretorio do apache…

mas ja repliquei o arquivo .jar do log4j em diversos diretórios…
coloquei na minha aplicacao,
coloquei no diretorio lib do jdk
coloquei até dentro do diretorio lib do toncat…

ah sim, alterei a variavel de ambiente CLASSPATH corretamente, tb, de acordo com a instrucao abaixo:
<diretório onde você descompactou o log4j>/dist/lib/log4j-X.X.X.jar

por favor, me informem onde devo colocar este .jar exatamente, para que o pacote do loc4j, venha a ser encontrado

aguardo o retorno.

sds,
Jovan

PQPEEEEE

CONSEGUI

foi no esquema de tentativa e erro…

coloquei no diretorio:
C:\nomedoprojeto\WEB-INF\lib
(pq meu projeto ta em uma pasta de web, pra jsp)

funcionou como um milagre

agora vamos para a implementação.

log4j sux.

só tenho isso a dizer.

Ele faz de conta que é configurável, mas pra vc ter um logger só em todas as classes do seu pacote vc tem que fazer na mão… muito burro!!

Ou será que os experts me convencem do contrário??

Tudo de bom!

realmente to ralando um pouco pra fazer a coisa funcionar por aqui:

Já tenho minhas classes mysqlHandler e MySqlConnectionHandler prontas…

Já tá tudo compilando, mas não to sabendo muito bem como aplicá-las.

Vejam só:

package br.com.projeto.conecta;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;

import org.apache.log4j.jdbcplus.JDBCConnectionHandler;

/**
 * Implement a sample JDBCConnectionHandler for MySQL database
 */ 
public class MySqlConnectionHandler implements JDBCConnectionHandler {
  Connection con = null;
  String url = "jdbc:mysql://localhost/projeto?user=root&password=";
  String username = "root";
  String password = "";

  static {
	  try {
		  // load driver
			Driver dMySql = (Driver) (Class.forName("com.mysql.jdbc.Driver").newInstance());
	  	DriverManager.registerDriver(dMySql);
	  } catch (Exception e) {
		  System.err.println("Could not register driver.");
		  e.printStackTrace();
	  }
  }

  public Connection getConnection() {
    return getConnection(url, username, password);
  }

  public Connection getConnection(String _url, String _username, String _password) {
    try {
      if (con != null && !con.isClosed())
        con.close();
			con = DriverManager.getConnection(url);
      con.setAutoCommit(false);
    } catch (Exception e) {
      e.printStackTrace();
    }

    return con;
  }
}

[code]package br.com.projeto.aplicacao.conecta;

import org.apache.log4j.spi.LoggingEvent;

import org.apache.log4j.jdbcplus.JDBCSqlHandler;

public class MySqlHandler implements JDBCSqlHandler {

private int inc = 0;

public String getStatement(LoggingEvent event) throws Exception {
	return "INSERT INTO LOGTEST (id, msg, created_on, created_by) VALUES ("
		+ ++inc
		+ ", '"
		+ event.getMessage()
		+ "', sysdate, 'MySqlHandler')";
}

}[/code]

To com um problema.
Tenho um servlet que chama uma classe chamada Database, nesta classe tenho o log4j configurado, mas exceção ocorre nesta parte:

static Logger logger = Logger.getLogger(LoggingTest.class); ele não acha o .class por causa que ele se encontra em outra pasta da aplicação, como faço por exemplo se meus .java estão em src e meus .class estão em classes fazer ele pegar a .class na pasta certa?

não consigo acessar… :frowning:

Não consegue acessar o que?

o tutorial!!!

O tutorial não está mais disponível? Fiquei muito curioso sobre como utilizar bem o LOG4J. Por favor, disponibilizem novamente o tutorial.

Grato,

:arrow: http://www.guj.com.br/java.artigo.130.1.guj

Editei o link, que estava usando as URLs antigas do GUJ. Valeu.

[]'s