Duvida com log4j[Resolvido]

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

minha classe Dao

[code]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;
}[/code]

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.

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

sim

[code]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[/code]

tente

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

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

[quote=guilherme.cq]tente

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

nao da certo o logger eh uma variavel global neh

[quote]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[/quote]

continua dando o msm erro

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

Flw

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

Flw[/quote]

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

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).

Bem lembrado!

static para o logger!

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

[quote=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).[/quote]

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)

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

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…

[quote=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[/quote]

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

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

[code]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;
}[/code]

[quote=guialeixo][quote=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[/quote]

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

[code]
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

[/code][/quote]

Não tah gerando o arquivo?

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

Flw

[quote]
Não tah gerando o arquivo?

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

Flw [/quote]

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

[quote=guialeixo][quote]
Não tah gerando o arquivo?

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

Flw [/quote]

creio que sim estou querendo q salve no proprio caminho do meu pacote[/quote]

Tenta soh /GILog.xml

deu certo vlw velho ^^

Aowpa, flw :smiley: