1 Log4j-Konfigurationsanweisungen
1.1 Konfigurationsdatei
Log4j kann dynamisch über ein Java-Programm festgelegt werden. Der offensichtliche Nachteil dieser Methode besteht darin, dass Sie die Java-Datei ändern und dann neu kompilieren müssen, wenn Sie die Protokollausgabeebene und andere Informationen ändern müssen.
Log4j kann auch über Konfigurationsdateien eingestellt werden. Derzeit werden zwei Formate von Konfigurationsdateien unterstützt:
•xml-Datei
•properties-Datei (empfohlen)
Das Folgende ist der vollständige Inhalt einer log4j-Konfigurationsdatei:
Kopieren Sie den Codecode wie folgt:
log4j.rootCategory=INFO, stdout
log4j.rootLogger=info, stdout
### Standardausgabe ###
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
### Paket festlegen ###
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=debug
1.2 Konfigurieren Sie den Root-Logger
Der Root-Logger definiert hauptsächlich die von log4j unterstützte Protokollebene und das Ausgabeziel. Seine Syntax lautet:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
Unter diesen ist die Stufe die Priorität der Protokollierung, die in die Stufen AUS, FATAL, FEHLER, WARN, INFO, DEBUG, ALLE oder benutzerdefinierte Stufen unterteilt ist.
Es wird empfohlen, nur vier Ebenen zu verwenden. Die Prioritäten von hoch nach niedrig sind ERROR, WARN, INFO und DEBUG.
appenderName gibt an, wo die Protokollinformationen ausgegeben werden, und es können mehrere Ausgabeziele gleichzeitig angegeben werden.
1.3 Konfigurieren Sie den Ausgabeziel-Appender
Der Appender definiert hauptsächlich, wo die Protokollinformationen ausgegeben werden. Die Hauptsyntax lautet:
Kopieren Sie den Codecode wie folgt:
log4j.appender.appenderName = classInfo
log4j.appender.appenderName.option1 = Wert1
…
log4j.appender.appenderName.optionN = valueN
Zu den von Log4j bereitgestellten Appendern gehören die folgenden:
•org.apache.log4j.ConsoleAppender(Konsole),
•org.apache.log4j.FileAppender(Datei),
•org.apache.log4j.DailyRollingFileAppender (erzeugt jeden Tag eine Protokolldatei),
•org.apache.log4j.RollingFileAppender (erzeugt eine neue Datei, wenn die Dateigröße die angegebene Größe erreicht)
•org.apache.log4j.WriterAppender (Protokollinformationen im Streaming-Format an einen beliebigen angegebenen Ort senden)
Nehmen Sie ConsoleAppender als Beispiel, wie zum Beispiel:
Kopieren Sie den Codecode wie folgt:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
1.4 Konfigurieren Sie das Formatlayout der Protokollinformationen
Layout ist für die Formatierung der Ausgabe des Appenders verantwortlich. Seine Syntax ist:
Kopieren Sie den Codecode wie folgt:
log4j.appender.appenderName.layout = classInfo
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
Zu den von Log4j bereitgestellten Layouts gehören unter anderem die folgenden:
•org.apache.log4j.HTMLLayout (Layout im HTML-Tabellenformat),
•org.apache.log4j.PatternLayout (kann Layoutmuster flexibel angeben),
•org.apache.log4j.SimpleLayout (enthält die Ebene und Informationszeichenfolge der Protokollinformationen)
•org.apache.log4j.TTCCLayout (enthält Protokollgenerierungszeit, Thread, Kategorie usw. Informationen)
1.5 Stellen Sie den Paketausgabepegel ein
Sie können die Protokollausgabestufe verschiedener Pakete festlegen. Die Syntax lautet:
log4j.logger.packageName=level
Unter diesen ist packageName der tatsächliche Paketname und level die Protokollebene, zum Beispiel:
Kopieren Sie den Codecode wie folgt:
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=debug
2 Log4j kombiniert mit J2ee
2.1 Verwendung der Federarchitektur
Spring ist wirklich gut. Wenn das System das Spring-Framework verwendet, ist die Integration von log4j im Wesentlichen in drei Schritte unterteilt:
2.1.1 Definieren Sie die log4j-Konfigurationsdatei
Kopieren Sie den Codecode wie folgt:
log4j.rootCategory=INFO, stdout
log4j.rootLogger=info, stdout
### Standardausgabe ###
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
### In Datei protokollieren ###
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=debug
2.1.2 Listener definieren
Der Listener muss in web.xml definiert werden, was hauptsächlich Folgendes umfasst: Definieren des Log4j-Konfigurationsdateiverzeichnisses und des Log4j-Listeners wie folgt:
Kopieren Sie den Codecode wie folgt:
<?xml version="1.0"kodierung="UTF-8"?>
<web-app version="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">
<!--Der Speicherort der von Spring geladenen Log4j-Konfigurationsdatei-->
<Kontextparameter>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<Kontextparameter>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext*.xml
</param-value>
</context-param>
<!--Spring log4j Config Loader-->
<Zuhörer>
<Listener-Klasse>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<Zuhörer>
<Listener-Klasse>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<Servlet>
<servlet-name>InitiaServlet</servlet-name>
<servlet-class>chb.test.web.InitiaServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<Willkommensdateiliste>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
2.1.3 Testklasse
Kopieren Sie den Codecode wie folgt:
Paket com.dheaven.mip.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.Logger;
öffentliche Klasse InitiaServlet erweitert HttpServlet {
protected Logger log = Logger.getLogger(InitiaServlet.class);
private static final long serialVersionUID = 8550329576989690578L;
/**
* Konstruktor des Objekts.
*/
öffentliches InitiaServlet() {
super();
}
/**
* Zerstörung des Servlets
*/
public void destroy() {
super.destroy();
}
/**
* Initialisierung des Servlets
*
* @throws ServletException, wenn ein Fehler auftritt
*/
public void init() löst eine ServletException { aus
log.debug("Der Server wurde gestartet und log4j hat begonnen zu arbeiten");
}
}
2.2 Keine Federarchitektur verwenden
Wenn das System Spring nicht verwendet, nehmen wir als Beispiel das Servlet. Sie können einfach den Schritten folgen und nur den Code einfügen, kein Unsinn.
2.2.1 Definieren Sie die log4j-Konfigurationsdatei
Platzieren Sie es im WEB-INF-Verzeichnis des Webprojekts mit folgendem Inhalt:
Kopieren Sie den Codecode wie folgt:
log4j.rootCategory=INFO, stdout
log4j.rootLogger=info, stdout
### Standardausgabe ###
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
### Paket festlegen ###
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=debug
2.2.2 Erstellen Sie eine log4j-Initialisierungsklasse
Kopieren Sie den Codecode wie folgt:
Paket com.dheaven.mip.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;
öffentliche Klasse InitLog4j erweitert HttpServlet {
private static final long serialVersionUID = 1L;
public void init() löst eine ServletException { aus
String-Präfix = getServletContext().getRealPath("/");
prefix = prefix.replace("//", "/");
String file = getInitParameter("log4j-init-file");
// Wenn die log4j-init-Datei nicht gesetzt ist, macht es keinen Sinn, es zu versuchen
if (file != null) {
PropertyConfigurator.configure(prefix + file);
}
}
}
2.2.3 Definieren Sie die Initialisierungsklasse in Web.xml
Kopieren Sie den Codecode wie folgt:
<Servlet>
<servlet-name>log4j-init</servlet-name>
<servlet-class>chb.test.web.InitLog4j</servlet-class>
<init-param>
<param-name>log4j-init-file</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
2.2.4 Testklasse
Kopieren Sie den Codecode wie folgt:
Paket chb.test.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.Logger;
öffentliche Klasse InitiaServlet erweitert HttpServlet {
protected Logger log = Logger.getLogger(InitiaServlet.class);
private static final long serialVersionUID = 8550329576989690578L;
/**
* Konstruktor des Objekts.
*/
öffentliches InitiaServlet() {
super();
}
/**
* Zerstörung des Servlets
*/
public void destroy() {
super.destroy();
}
/**
* Initialisierung des Servlets
*
* @throws ServletException, wenn ein Fehler auftritt
*/
public void init() löst eine ServletException { aus
log.debug("Der Server wurde gestartet und log4j hat begonnen zu arbeiten");
}
}