Log4J

Olá pessoal estou fazendo uma aplicação Web com Hibernate + JSF + AJAX no EasyEclipse e estou precisando usar o Log4J para gerar os Logs.

Eu peguei um tutorial aqui no GUJ e mais uns lugares, configurei no meu TOMCAT o LOG4J e o COMMONS-LOGGING mas quando eu subo o TomCat ele gera esses error:

log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.TldConfig).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.Embedded).
log4j:WARN Please initialize the log4j system properly.

q q eu posso fazer???

(Já setei o CLASSPATH e tbm setei ele no Eclipse por via das duvidas mas nao saiu o erro)…

vlw :cry:

Bixo, eu desenvolvi um programinha no trampo que usava log4J o lance eh q meu prog era coisa boba, feita pra rodar em console mas de repente pode ser que te ajude pq eu tive um erro parecido, esse warn do log4j tah dizendo q tu nao definiu um appender no “.properties” do log4j tipo no meu ficou ± assim:

log4j.rootLogger=info, M
log4j.appender.M=org.apache.log4j.RollingFileAppender
log4j.appender.M.File=g:/ftp/migracoespospre/log/logGeracaoArquivoBackLog.log
log4j.appender.M.layout=org.apache.log4j.PatternLayout
log4j.appender.M.layout.ConversionPattern=%d{dd/MM/yyyy - HH:mm:ss} [%c] %p - %m%n
log4j.appender.M.Append=true
log4j.appender.M.MaxFileSize=1MB
log4j.appender.M.MaxBackupIndex=5

a linha que esta em negrito define o tipo de appender que eu to usando
https://www.dev.java.net/files/documents/353/17634/log4j.pdf
nesse endereço tem um tuto simples que descreve o que cada um faz. As ultimas 3 linhas fazem o seguinte:
1 - informa pro log4j que nao crie um novo arquivo a cada evento, faz sempre um append do arquivo, ou seja adiciona a informaçao nova apos a ultima informaçao gravada.
2 - Informa o tamanho maximo do arquivo de log
3 - informa quantos arquivos podem ser mantidos no diretorio onde esta sendo gravado o log, cada arquivo que estoura o tamanho de 1 mega eh terminado e nao permite nova entrada de dados renomeando o arquivo estourado e pondo um indice no final para que o novo arquivo mantenha o nome definido pelo programador no properties.

Espero que tenha te ajudado, testa ai e diz se funcionou, se o erro era esse mesmo

Esse erro costuma acontecer quando ele não encontra o arquivo log4j.properties no classpath.

vc colocou o arquivo no classpath?

[quote=leonardo.atimus]Esse erro costuma acontecer quando ele não encontra o arquivo log4j.properties no classpath.

vc colocou o arquivo no classpath?[/quote]

É eu acabei de ler isso num tutorial a pouco q tinha que setar lá tbm, mas nao tem como setar na IDE? Eu to configurando nas variaveis de ambiente do Windows, mas queria setar lá na IDE como eu posso fazer com o .properties?

tu pode postar a parte do codigo da tua aplicaçao que faz o load do properties e configura o Log4J

Nao entendi… só quero saber como colocar as variaveis de ambiente pela IDE, sem precisar colocar lá na do windows… queria saber se tem jeito…

Vlw pelos tutoriais

Mas queria saber uma coisa…
Por exemplo:

[code]package br.com.japinfo.jhosp.testes;

import java.io.FileOutputStream;

import org.apache.log4j.HTMLLayout;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.WriterAppender;

public class HTMLExample {

static Logger logger = Logger.getLogger(HTMLExample.class);

public static void main(String[] args) {
	// cria o Layout
	HTMLLayout layout = new HTMLLayout();

	// cria o appender do tipo WriterAppender
	WriterAppender writerAppender = null;

	try {
		// cria o HTML
		FileOutputStream fileOutputStream = new FileOutputStream(
				"fileOutputStream.html");

		// cria um riteAppender passando o layout e o file
		writerAppender = new WriterAppender(layout, fileOutputStream);
	} catch (Exception e) {
		// logando uma exception, caso ocorra
		logger.error("Erro: " + e.getMessage() + "Local do Erro: "
				+ e.getStackTrace());
	}

	// Adicionando WriteAppender criado ao Logger
	logger.addAppender(writerAppender);

	// ajustando o nivel do Log
	logger.setLevel((Level) Level.DEBUG);

	// Logando
	logger.debug("Logando um Debug");
	logger.info("Logando um Info");
	logger.warn("Logando um Warn");
	logger.fatal("Logando um Fatal");
	logger.error("Logando um erro");
}

}
[/code]

Assim eu gero os logs em HTML dessa classe e se eu quisesse gerar erros de outras classes, como q eu teria que fazer pra tirar isso tudo do Void main e colocar em uma classe generica???

Cara, não sei se você ainda está precisando, mas no Eclipse mesmo que você tenha definido o log4j.properties você precisa configurar ele no Classpath do Run, por exemplo, se o seu arquivo log4j.properties estiver no /src você vai em Run > Classpath > User Entries > Advanced > Add Variable String , adicione a variável ${project_loc}

Ai o eclipse passa a achar o properties e não dá mais erro…

Por favor.

Alguem sabe como eu faco pra configurar uma variavel para setar a gravacao de log do Jboss 4.2 que seja compativel com Windows e UNIX?

Por exemplo o log deve ser gravado no caminho:

UNIX:
/appl/logs

Windows:
c:\jboss-4.0.2\server\default\log

Ou seja quando for UNIX grava no “/appl/logs” e no Windows c:\jboss-4.0.2\server\default\log