1 Instruções de configuração do Log4j
1.1 Arquivo de configuração
Log4j pode ser definido dinamicamente por meio de um programa java. A desvantagem óbvia desse método é que se você precisar modificar o nível de saída do log e outras informações, deverá modificar o arquivo java e depois recompilar, o que é muito problemático;
Log4j também pode ser definido por meio de arquivos de configuração. Atualmente, ele suporta dois formatos de arquivos de configuração:
• arquivo XML
•arquivo de propriedades (recomendado)
A seguir está o conteúdo completo de um arquivo de configuração log4j:
Copie o código do código da seguinte forma:
log4j.rootCategory=INFO, stdout
log4j.rootLogger=info, stdout
### saída padrão ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n
### definir pacote ###
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=depurar
1.2 Configurar o Logger raiz
O criador de logs raiz define principalmente o nível de log e o destino de saída suportado pelo log4j.
log4j.rootLogger = [nível], appenderName, appenderName,…
Dentre eles, o nível é a prioridade de registro, que é dividida em OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL ou níveis customizados.
Recomenda-se usar apenas quatro níveis. As prioridades de cima para baixo são ERROR, WARN, INFO e DEBUG.
appenderName especifica onde as informações de log são geradas e vários destinos de saída podem ser especificados ao mesmo tempo.
1.3 Configure o Appender de destino de saída
Appender define principalmente onde as informações de log são geradas. A sintaxe principal é:
Copie o código do código da seguinte forma:
log4j.appender.appenderName=classInfo
log4j.appender.appenderName.option1 = valor1
…
log4j.appender.appenderName.optionN = valorN
Os anexadores fornecidos pelo Log4j incluem o seguinte:
•org.apache.log4j.ConsoleAppender(console),
•org.apache.log4j.FileAppender(arquivo),
•org.apache.log4j.DailyRollingFileAppender (gera um arquivo de log todos os dias),
•org.apache.log4j.RollingFileAppender (gera um novo arquivo quando o tamanho do arquivo atinge o tamanho especificado)
•org.apache.log4j.WriterAppender (envia informações de log em formato de streaming para qualquer local especificado)
Tome ConsoleAppender como exemplo, como:
Copie o código do código da seguinte forma:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
1.4 Configure o layout do formato das informações de log
Layout é responsável por formatar a saída do Appender. Sua sintaxe é:
Copie o código do código da seguinte forma:
log4j.appender.appenderName.layout = classInfo
log4j.appender.appenderName.layout.option1 = valor1
…
log4j.appender.appenderName.layout.optionN = valorN
Entre eles, os layouts fornecidos pelo Log4j incluem os seguintes:
•org.apache.log4j.HTMLLayout (layout em formato de tabela HTML),
•org.apache.log4j.PatternLayout (pode especificar padrões de layout com flexibilidade),
•org.apache.log4j.SimpleLayout (contém o nível e a sequência de informações das informações de log)
•org.apache.log4j.TTCCLayout (contém informações sobre tempo de geração de log, thread, categoria, etc.)
1.5 Definir nível de saída do pacote
Você pode definir o nível de saída do log de diferentes pacotes. A sintaxe é:
log4j.logger.packageName=nível
Entre eles, packageName é o nome real do pacote e level é o nível de log, por exemplo:
Copie o código do código da seguinte forma:
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=depurar
2 Log4j combinado com J2ee
2.1 Usando arquitetura Spring
Spring é muito bom. Se o sistema usa o framework spring, é muito simples integrar o log4j. Ele é dividido principalmente em 3 etapas:
2.1.1 Definir arquivo de configuração log4j
Copie o código do código da seguinte forma:
log4j.rootCategory=INFO, stdout
log4j.rootLogger=info, stdout
### saída padrão ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n
### registrar no arquivo ###
log4j.logger.org.springframework=info
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.chb.test=depurar
2.1.2 Definir ouvintes
O ouvinte precisa ser definido em web.xml, que inclui principalmente: definir o diretório do arquivo de configuração log4j e o ouvinte log4j, como segue:
Copie o código do código da seguinte forma:
<?xml versão="1.0" codificação="UTF-8"?>
<versão do aplicativo web = "2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!--A localização do arquivo de configuração Log4j carregado pelo Spring-->
<parâmetro de contexto>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<parâmetro de contexto>
<param-name>contextConfigLocation</param-name>
<valor do parâmetro>
/WEB-INF/classes/applicationContext*.xml
</param-value>
</context-param>
<!--Carregador de configuração do Spring log4j-->
<ouvinte>
<classe de ouvinte>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</ouvinte>
<ouvinte>
<classe de ouvinte>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</ouvinte>
<servlet>
<servlet-name>InitiaServlet</servlet-name>
<servlet-class>chb.test.web.InitiaServlet</servlet-class>
<carregar na inicialização>1</carregar na inicialização>
</servlet>
<lista de arquivos de boas-vindas>
<arquivo de boas-vindas>index.jsp</arquivo de boas-vindas>
</welcome-file-list>
</web-app>
2.1.3 Classe de teste
Copie o código do código da seguinte forma:
pacote com.dheaven.mip.web;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServlet;
importar org.apache.log4j.Logger;
classe pública InitiaServlet estende HttpServlet {
log do Logger protegido = Logger.getLogger (InitiaServlet.class);
privado estático final longo serialVersionUID = 8550329576989690578L;
/**
* Construtor do objeto.
*/
public InitiaServlet() {
super();
}
/**
* Destruição do servlet <br>.
*/
public void destruir() {
super.destruir();
}
/**
* Inicialização do servlet.
*
* @throws ServletException se ocorrer um erro
*/
public void init() lança ServletException {
log.debug("O servidor foi iniciado e o log4j começou a funcionar");
}
}
2.2 Não usando arquitetura Spring
Se o sistema não usa spring, vamos pegar o servlet como exemplo. É muito simples. Basta seguir os passos e colar o código, sem bobagens.
2.2.1 Definir arquivo de configuração log4j
Coloque-o no diretório WEB-INF do projeto web, com o seguinte conteúdo:
Copie o código do código da seguinte forma:
log4j.rootCategory=INFO, stdout
log4j.rootLogger=info, stdout
### saída padrão ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n
### definir pacote ###
log4j.logger.org.apache.catalina=info
log4j.logger.org.apache.commons.digester.Digester=info
log4j.logger.org.apache.catalina.startup.TldConfig=info
log4j.logger.com.dheaven=depurar
2.2.2 Criar classe de inicialização log4j
Copie o código do código da seguinte forma:
pacote com.dheaven.mip.web;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServlet;
importar org.apache.log4j.PropertyConfigurator;
classe pública InitLog4j estende HttpServlet {
privado estático final longo serialVersionUID = 1L;
public void init() lança ServletException {
Prefixo de string = getServletContext().getRealPath("/");
prefixo = prefixo.replace("//", "/");
String arquivo = getInitParameter("log4j-init-file");
// se o log4j-init-file não estiver definido, então não adianta tentar
if (arquivo! = nulo) {
PropertyConfigurator.configure(prefixo + arquivo);
}
}
}
2.2.3 Definir classe de inicialização em Web.xml
Copie o código do código da seguinte forma:
<servlet>
<servlet-name>log4j-init</servlet-name>
<servlet-class>chb.test.web.InitLog4j</servlet-class>
<parâmetro de inicialização>
<param-name>arquivo log4j-init</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</init-param>
<carregar na inicialização>1</carregar na inicialização>
</servlet>
2.2.4 Classe de teste
Copie o código do código da seguinte forma:
pacote chb.test.web;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServlet;
importar org.apache.log4j.Logger;
classe pública InitiaServlet estende HttpServlet {
log do Logger protegido = Logger.getLogger (InitiaServlet.class);
privado estático final longo serialVersionUID = 8550329576989690578L;
/**
* Construtor do objeto.
*/
public InitiaServlet() {
super();
}
/**
* Destruição do servlet <br>.
*/
public void destruir() {
super.destruir();
}
/**
* Inicialização do servlet.
*
* @throws ServletException se ocorrer um erro
*/
public void init() lança ServletException {
log.debug("O servidor foi iniciado e o log4j começou a funcionar");
}
}