Como configurar o log4J em um projeto WEB

Como configurar o log4J em um projeto WEB

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Como configurar o log4J em um projeto WEB

Olá amigos, hoje vamos fazer o uso da biblioteca Java Log4J que é pode nos auxiliar a identificar o processamento da aplicação em diversos níveis de detalhe.

log4j


1. O que é o Log4J

O Log4J uma biblioteca de log de aplicações em Java. Seu nome completo é Apache log4j que é um projeto Apache Software Foundation e desenvolvido por uma equipe dedicada da Apache Software Foundation. Ele é uma das bibliotecas mais utilizadas no mundo Java por ser muito útil e prática para registros de execução da aplicação.

2. Níveis de Log

OFF
TRACE
DEBUG
INFO
WARN
ERROR
FATAL
ALL

Baixo Nível (Mais detalhes) =================================== Alto Nível (Menos detalhe)
ALL => TRACE => DEBUG => INFO => WARN => ERROR => FATAL

FATAL: São exibidas mensagens definidas como FATAL. Este nível de log é utilizado quando ocorre um erro na aplicação e não será possível recuperar os dados processados. Esse é um típico erro de ambiente.

ERROR: São exibidas mensagens definidas como ERROR e FATAL. O nível ERROR é utilizado quando
temos um erro na aplicação que pode ser tratado e recuperado.

1
2
3
4
5
try {
	  //....		
	} catch (Exception e) {
		logger.error("Ocorreu o seguinte erro na aplicação: " + e.getMessage());
	}

WARNING: São exibidas mensagens definidas como WARN, ERROR e FATAL. O nível WARNING é utilizado
para avisar que há um erro em potencial na aplicação.

INFO: São exibida mensagens definidas como INFO, WARN, ERROR e FATAL. O nível INFO é utilizado para exibir informações da aplicação é comum utilizá-lo para gravar no log mensagens exibidas para o usuário na tela.

DEBUG: São exibidas mensagens definidas como DEBUG, INFO, WARN, ERROR e FATAL. Este nível exibe para identificar cada atividade executada na aplicação durante sua execução.

TRACE: São exibidas mensagens definidas como TRACE, DEBUG, INFO, WARN, ERROR e FATAL. Este nível é mais detalhado que o debug, pois permite uma detalhamento inclusive dos logs de componentes de terceiros utilizados em nossa aplicação.

ALL: É o mais baixo nível possível de log. Torna ligado todos os níveis de log.

OFF: Este é o nível “desligado”. Nenhum tipo de informação é gerada no LOG.

Quanto mais baixo o nível de log mais detalhes teremos sobre a execução da nossa aplicação. Em contra partida lembre-se que para gerar o log o framework log4J exigirá processamento e isto pode comprometer a performance da sua aplicação. Use com cautela!

3. Criando um projeto de exemplo


Crie um projeto Web chamado FeltexLog4J.

4. Criando o arquivo de LOG

Crie um arquivo chamado “log4j.properties” na pasta “src” do seu projeto. Em seguida adicione o seguinte conteúdo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Níveis: ALL, DEBUG, ERROR, FATAL, INFO, OFF,TRACE, WAR
 
#Nível de Log INFO Saídas A1 e Console
log4j.rootLogger= INFO, A1, Console
 
#Informando qual o tipo de geração do arquivo de log. Neste caso será diário
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
 
#Onde será gravado o arquivo de Log e qual será o seu nome
log4j.appender.A1.file=C:/temp/FeltexLog4J.1.0.log
 
#Definição de um padrão de saída de log para A1
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 
#Padrão de data como 2050-01-31 (AnoAnoAnoAno-MesMes-DiaDia)
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
 
#Definição de como será exibida cada lilha de LOG
log4j.appender.A1.layout.ConversionPattern=%p - %d{yyMMdd.HHmmss} - FeltexLog4J - %m %n
 
#Uma nova saída para o LOG, neste caso a console para IDE (Eclipse o NetBeans) ou prompt (Windows ou Linux)
log4j.appender.Console=org.apache.log4j.ConsoleAppender
 
#Definição de um padrão de saída de log para Console
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
 
#Uma nova saída para o LOG, neste caso a console para IDE (Eclipse o NetBeans) ou prompt (Windows ou Linux)
log4j.appender.Console.layout.ConversionPattern=%p - %d{yyyyMMdd.HHmmss} - FeltexLog4J - %m %n

As linhas que começam com “#” são comentários para as linhas de comando.

5. Criação do Servlet


Crie um servlet na sua aplicação chamado “ExibirMensagem”. Quando ele for executado o Log4J exibirá as mensagens no arquivo de log e na console. Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package br.com.feltex.log4j.servlet;
 
import java.io.IOException;
import java.util.Date;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.log4j.Logger;
 
@WebServlet("/ExibirMensagem")
public class ExibirMensagem extends HttpServlet {
	private static final long serialVersionUID = 1L;
 
	// Criação da variável que utilizaremos para gravar as linhas de LOG
	private static Logger logger = Logger.getLogger(ExibirMensagem.class);
 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		logger.debug("Iniciado o método doGet");
		doPost(request, response);
		logger.debug("Concluído o método doGet");
 
	}
 
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
			IOException {
		String mensagem = "";
		try {
			logger.info("Nível de Log INFO");
			logger.warn("Nível de Log WARN");
			logger.debug("Nível de Log DEBUG");
			logger.error("Nível de Log ERROR");
			logger.trace("Nível de Log TRACE");
 
			// Mensagem que será exibida na tela com a informação da última
			// execução.
			mensagem = "<H3>Nível de log atual: " + logger.getLevel() + "</H3>";
			mensagem += "<H3>Ultima execução: " + new Date() + "<H3>";
 
 
			//Atribuição da mensagem para enviar à página index.jsp
			request.setAttribute("mensagem", mensagem);
 
			//Preparação da chamada da página index.jsp
			RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
 
			//Envio da requisição para a página index.jsp
			rd.forward(request, response);
 
		} catch (Exception e) {
			logger.error("Ocorreu o seguinte erro na aplicação: " + e.getMessage());
		}
	}
}

6. Criação da página


Crie uma página chamada “index.jsp”. Nela teremos um link para o servlet que irá gerar logs.

1
2
3
4
5
6
7
8
9
10
<html>
<head>
<title>projeto Log4J</title>
</head>
<body>
	Bem vindo ao projeto Log4J
	<br><a href="ExibirMensagem">Executar Servlet</a>
	<br>${mensagem}
</body>
</html>

7. Execução do projeto


Inicie o seu projeto e clique no link da página principal. O resultado será algo com o exemplo abaixo:

INFO - 20141017.171951 - FeltexLog4J - Nível de Log INFO 
WARN - 20141017.171951 - FeltexLog4J - Nível de Log WARN 
ERROR - 20141017.171951 - FeltexLog4J - Nível de Log ERROR 

8. Download do exemplo completo


Faça o download do exemplo completo neste link. Se você não souber importar um arquivo war então leia este artigo aqui.

Então é isso amigos. Por hoje é só e vida que Segue!

Links relacionados

Não se esqueça de curtir este post nas rede sociais. Dê a sua contribuição social e ajude o autor:

Deixe um comentário