Duvida com log4j[Resolvido]

19 respostas
G

Bom dia estou com um problema no log4j ele nao esta funcionando de forma nenhuma gostaria de uma ajuda,

minha classe Dao
public class ClienteDao {

	private static ClienteDao instance;
	
	public static ClienteDao getInstance() {
		if (instance == null) {
			instance = new ClienteDao();
		}
		return instance;
	}
	private Logger logger;

	private ClienteDao() {
		logger = Logger.getLogger(ClienteDao.class);
	}

	public ArrayList<Cliente> obterClientes() {
		ArrayList<Cliente> clientes = new ArrayList<Cliente>();
		try {
			logger.info("Obtendo a lista de clientes");
			Connection con = PoolConection.getInstance().getConnection();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery("SELECT * FROM Cliente");
			while (rs.next()) {
				String nome =rs.getString("nome");
				String endereco = rs.getString("endereço");
				String cpf = rs.getString("cpfCliente");
				String telefone = rs.getString("telefone");
				Cliente c = new Cliente(nome, endereco,telefone,
				cpf);
				clientes.add(c);
			}
			logger.info("Lista de clientes obtida com sucesso");
		} catch (Exception e) {
			logger.error("Não foi possível obter a lista de clientes. Motivo:\n " + e.getMessage());
		}
		return clientes;
	}

o erro que esta dando

log4j:WARN No appenders could be found for logger (br.com.oficina.dao.ClienteDao).
log4j:WARN Please initialize the log4j system properly.

19 Respostas

zoren

Você criou o arquivo log4j.properties na raiz dos pacotes??

G
zoren:
Você criou o arquivo log4j.properties na raiz dos pacotes??

sim

log4j.category.br.com.oficina=DEBUG, Default, Chainsaw
log4j.rootCategory=DEBUG, Default

log4j.appender.Default=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Default.DatePattern='.'yyyyMMdd
log4j.appender.Default.file=./GILog.xml
log4j.appender.Default.layout=org.apache.log4j.xml.XMLLayout
log4j.appender.Default.append=true

log4j.appender.Chainsaw=org.apache.log4j.net.SocketAppender
log4j.appender.Chainsaw.remoteHost=localhost
log4j.appender.Chainsaw.port=4445
log4j.appender.Chainsaw.locationInfo=true
G

tente

private Logger logger = Logger.getLogger(ClienteDao.class);
Foxlol

O arquivo log4j.properties tem que estar disponível no classpath da aplicação.

Coloque-o na pasta src.

E utilize:

log4j.logger.br.com.oficina=DEBUG, Default, Chainsaw  
log4j.rootLogger=DEBUG, Default

Ao invés de:

log4j.category.br.com.oficina=DEBUG, Default, Chainsaw  
log4j.rootCategory=DEBUG, Default

Category está deprecated.

Flw

G

[quote=guilherme.cq]tente

private Logger logger = Logger.getLogger(ClienteDao.class);

nao da certo o logger eh uma variavel global neh

O arquivo log4j.properties tem que estar disponível no classpath da aplicação.

Coloque-o na pasta src.

E utilize:

view plaincopy to clipboardprint?

1. log4j.logger.br.com.oficina=DEBUG, Default, Chainsaw    
   2. log4j.rootLogger=DEBUG, Default

log4j.logger.br.com.oficina=DEBUG, Default, Chainsaw log4j.rootLogger=DEBUG, Default

Ao invés de:

view plaincopy to clipboardprint?

1. log4j.category.br.com.oficina=DEBUG, Default, Chainsaw    
   2. log4j.rootCategory=DEBUG, Default

log4j.category.br.com.oficina=DEBUG, Default, Chainsaw log4j.rootCategory=DEBUG, Default

Category está deprecated.

Flw

continua dando o msm erro

Foxlol

Quando você compila/gera o pacote(jar) o log4j.properties está ficando onde? Coloca a hierarquia aí.

Flw

G

Foxlol:
Quando você compila/gera o pacote(jar) o log4j.properties está ficando onde? Coloca a hierarquia aí.

Flw

como que eu faço isso xD??
ehhee ele ta dentro do projeto, num ta dentro do src nao

Foxlol

HIAOUIAE eita.

O log4j.properties tem que estar na pasta raiz onde você coloca os arquivos java (.java), geralmente é SRC, mas pode ter outros nomes. Vc está usando alguma IDE?

Ai depois que compila, gera o arquivo jar, e o arquivo log4j.properties tem q estar na pasta raiz de onde estão as classes compiladas (.class).

G

Bem lembrado!

static para o logger!

private static Logger logger = Logger.getLogger("");
G

Foxlol:
HIAOUIAE eita.

O log4j.properties tem que estar na pasta raiz onde você coloca os arquivos java (.java), geralmente é SRC, mas pode ter outros nomes. Vc está usando alguma IDE?

Ai depois que compila, gera o arquivo jar, e o arquivo log4j.properties tem q estar na pasta raiz de onde estão as classes compiladas (.class).

huauha intao iniciante =)
eu to usando o eclipse mas eu acho q ja coloquei no classpath sim so q continua dando erro quando eu coloco dentro do src da esse erro

log4j:ERROR Could not connect to remote log4j server at [localhost]. We will try again later. java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at org.apache.log4j.net.SocketAppender.connect(SocketAppender.java:203) at org.apache.log4j.net.SocketAppender.activateOptions(SocketAppender.java:160) at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:256) at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:132) at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:96) at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:654) at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:612) at org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:533) at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:417) at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:441) at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:468) at org.apache.log4j.LogManager.<clinit>(LogManager.java:122) at org.apache.log4j.Logger.getLogger(Logger.java:116) at br.com.oficina.dao.ClienteDao.<init>(ClienteDao.java:32) at br.com.oficina.dao.ClienteDao.getInstance(ClienteDao.java:25) at br.com.oficina.view.TableCliente$TableClienteModel.<init>(TableCliente.java:125) at br.com.oficina.view.TableCliente.<init>(TableCliente.java:26) at br.com.oficina.view.TableCliente.main(TableCliente.java:174)

Foxlol

Então cara, tá certo dar esse erro.

O problema pelo que to vendo é que ele não está conseguindo conectar neste socket do apendder que vc definiiu:

org.apache.log4j.net.SocketAppender

Faz o teste, tira toda configuração desse appender e deixa soh o Default que deve subir.

Aí depois vc vê o pq não tah conectando. Vc tem que ter um socket aberto nessa porta 4445.

Flw

G

Verifique:

O log4j.properties deve ficar na pasta src.

import org.apache.log4j.Logger;

Importou o log4j-1.2.15.jar no eclipse? (pode ser outra versão)
Clica com botao direto no projeto… Build Path - > Add External Archives.

Normalmente se usa

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

static pois você usará a mesma instancia para todas as classes.

Podem me corrigir se falei besteira…

G

Foxlol:
Então cara, tá certo dar esse erro.

O problema pelo que to vendo é que ele não está conseguindo conectar neste socket do apendder que vc definiiu:

org.apache.log4j.net.SocketAppender

Faz o teste, tira toda configuração desse appender e deixa soh o Default que deve subir.

Aí depois vc vê o pq não tah conectando. Vc tem que ter um socket aberto nessa porta 4445.

Flw

fiz o que voce falou porem agora nao da erro mas tb nao funciona

log4j.logger.br.com.oficina=DEBUG, Default 
log4j.rootLogger=DEBUG, Default 

log4j.appender.Default=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Default.DatePattern='.'yyyyMMdd
log4j.appender.Default.file=./GILog.xml
log4j.appender.Default.layout=org.apache.log4j.xml.XMLLayout
log4j.appender.Default.append=true
G
guilherme.cq:
Verifique:

O log4j.properties deve ficar na pasta src.

import org.apache.log4j.Logger;

Importou o log4j-1.2.15.jar no eclipse? (pode ser outra versão)
Clica com botao direto no projeto... Build Path - > Add External Archives.

Normalmente se usa
private static final Logger logger = Logger.getLogger(SuaClasse.class);

static pois você usará a mesma instancia para todas as classes.

Podem me corrigir se falei besteira...

tipo eu ja adicionei externamente porem foi a versao
log4j-1.2.11.jar
nao creio que tenha tanto problema, o negocio do private é pq eu estou fazendo meus daos no padrao singleton dai nao da pra mim fazer isso que voce ta me sugerindo (ACHO)
olha a estrutura

public class ClienteDao {

	private static ClienteDao instance;
	
	public static ClienteDao getInstance() {
		if (instance == null) {
			instance = new ClienteDao();
		}
		return instance;
	}
	private Logger logger;

	private ClienteDao() {
		logger = Logger.getLogger(ClienteDao.class);
	}

	public ArrayList<Cliente> obterClientes() {
		ArrayList<Cliente> clientes = new ArrayList<Cliente>();
		try {
			logger.info("Obtendo a lista de clientes");
			Connection con = PoolConection.getInstance().getConnection();
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery("SELECT * FROM Cliente");
			while (rs.next()) {
				String nome =rs.getString("nome");
				String endereco = rs.getString("endereço");
				String cpf = rs.getString("cpfCliente");
				String telefone = rs.getString("telefone");
				Cliente c = new Cliente(nome, endereco,telefone,
				cpf);
				clientes.add(c);
			}
			logger.info("Lista de clientes obtida com sucesso");
		} catch (Exception e) {
			logger.error("Não foi possível obter a lista de clientes. Motivo:\n " + e.getMessage());
		}
		return clientes;
	}
Foxlol
guialeixo:
Foxlol:
Então cara, tá certo dar esse erro.

O problema pelo que to vendo é que ele não está conseguindo conectar neste socket do apendder que vc definiiu:

org.apache.log4j.net.SocketAppender

Faz o teste, tira toda configuração desse appender e deixa soh o Default que deve subir.

Aí depois vc vê o pq não tah conectando. Vc tem que ter um socket aberto nessa porta 4445.

Flw

fiz o que voce falou porem agora nao da erro mas tb nao funciona
log4j.logger.br.com.oficina=DEBUG, Default 
log4j.rootLogger=DEBUG, Default 

log4j.appender.Default=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Default.DatePattern='.'yyyyMMdd
log4j.appender.Default.file=./GILog.xml
log4j.appender.Default.layout=org.apache.log4j.xml.XMLLayout
log4j.appender.Default.append=true

Não tah gerando o arquivo?

Esse caminho: ./GILog.xml tá certo? Tem q ter o ponto mesmo?

Flw

G


Não tah gerando o arquivo?

Esse caminho: ./GILog.xml tá certo? Tem q ter o ponto mesmo?

Flw

creio que sim estou querendo q salve no proprio caminho do meu pacote

Foxlol

guialeixo:

Não tah gerando o arquivo?

Esse caminho: ./GILog.xml tá certo? Tem q ter o ponto mesmo?

Flw

creio que sim estou querendo q salve no proprio caminho do meu pacote

Tenta soh /GILog.xml

G

deu certo vlw velho ^^

Foxlol

Aowpa, flw :smiley:

Criado 17 de novembro de 2009
Ultima resposta 17 de nov. de 2009
Respostas 19
Participantes 4