Transfer from http://www.jb51.net/article/41001.htm
1 log4j Configuration Instructions
1.1 Configuration Files
Log4j can be dynamically set through the Java program, the obvious disadvantage of this way is: if you need to modify the log output level and other information, you must modify the Java file, and then recompile, it is troublesome;
Log4j can also be set by configuration file, currently supports two formats of configuration files:
XML file
Properties File (recommended)
The following is the full contents of a log4j configuration file:
Copy CodeThe code is as follows:
Log4j.rootcategory=info, stdout
Log4j.rootlogger=info, stdout
# # # stdout # #
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
# # # Set Package # # #
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 Configuring the root Logger
The root logger primarily defines the log level and output destination supported by log4j, with the following syntax:
Log4j.rootlogger = [level], Appendername, Appendername, ...
Level is the priority of logging, which is divided into off, FATAL, ERROR, WARN, INFO, DEBUG, all, or custom levels.
It is recommended to use only four levels, with the priority from high to low being error, WARN, INFO, DEBUG.
APPENDERNAME specifies where the log information is exported, and multiple output destinations can be specified at the same time.
1.3 Configuring the Output Destination Appender
Appender primarily defines where the log information output is, and the main syntax is:
Copy CodeThe code is as follows:
Log4j.appender.appenderName = ClassInfo
Log4j.appender.appenderName.option1 = value1
...
Log4j.appender.appenderName.optionN = Valuen
LOG4J offers the following types of Appender:
Org.apache.log4j.consoleappender (console),
org.apache.log4j.fileappender (file),
org.apache.log4j.dailyrollingfileappender (generates a log file every day),
Org.apache.log4j.rollingfileappender (creates a new file when the file size reaches the specified size)
Org.apache.log4j.writerappender (send log information in stream format to any specified location)
Take Consoleappender For example, such as:
Copy CodeThe code is as follows:
Log4j.appender.stdout=org.apache.log4j.consoleappender
Log4j.appender.stdout.target=system.out
1.4 Format layout for configuration log information
Layout is responsible for formatting the output of the Appender, whose syntax is:
Copy CodeThe code is as follows:
Log4j.appender.appenderName.layout = ClassInfo
Log4j.appender.appenderName.layout.option1 = value1
...
Log4j.appender.appenderName.layout.optionN = Valuen
Among them, log4j offers the following types of layout:
org.apache.log4j.htmllayout (Layout in HTML table Form),
Org.apache.log4j.patternlayout (flexibility to specify layout mode),
Org.apache.log4j.simplelayout (contains level and information strings for log information)
Org.apache.log4j.ttcclayout (contains information about the time, thread, category, etc.) of the log
1.5 Setting the package output level
You can set the log output level for different package, with the following syntax:
Log4j.logger.packagename=level
Where the PackageName is the actual package name, level is the log levels, for example:
Copy CodeThe code is as follows:
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 and the Java EE combination
2.1 Using the Spring schema
Spring is really good, for us to do a lot of things, if the system uses the spring framework, then to integrate the log4j is very simple, mainly divided into 3 steps, as follows:
2.1.1 Defining log4j configuration Files
Copy CodeThe code is as follows:
Log4j.rootcategory=info, stdout
Log4j.rootlogger=info, stdout
# # # stdout # #
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
# # # Log to File # # #
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 Defining listeners
Listeners need to be defined in Web. XML, mainly including: Define LOG4J profile directory, log4j Listener, as follows:
Copy CodeThe code is as follows:
<?xml version= "1.0" encoding= "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 ">
<!--the log4j profile location loaded by spring--
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/web-inf/classes/applicationcontext*.xml
</param-value>
</context-param>
<!--Spring log4j Config loader-->
<listener>
<listener-class>
Org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<listener>
<listener-class>
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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
2.1.3 Test class
Copy CodeThe code is as follows:
Package com.dheaven.mip.web;
Import javax.servlet.ServletException;
Import Javax.servlet.http.HttpServlet;
Import Org.apache.log4j.Logger;
public class Initiaservlet extends HttpServlet {
protected Logger log = Logger.getlogger (Initiaservlet.class);
Private static final long serialversionuid = 8550329576989690578L;
/**
* Constructor of the object.
*/
Public Initiaservlet () {
Super ();
}
/**
* Destruction of the servlet. <br>
*/
public void Destroy () {
Super.destroy ();
}
/**
* Initialization of the servlet. <br>
*
* @throws servletexception If an error occure
*/
public void Init () throws Servletexception {
Log.debug ("Server started, log4j started working");
}
}
2.2 Do not use spring architecture
If the system does not use spring, we take the servlet as an example, very simple, you follow the steps to execute, only the code, do not say nonsense.
2.2.1 Defining log4j configuration Files
In the Web-inf directory of the Web project, content such as:
Copy CodeThe code is as follows:
Log4j.rootcategory=info, stdout
Log4j.rootlogger=info, stdout
# # # stdout # #
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
# # # Set Package # # #
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 Creating log4j Initialization classes
Copy CodeThe code is as follows:
Package com.dheaven.mip.web;
Import javax.servlet.ServletException;
Import Javax.servlet.http.HttpServlet;
Import Org.apache.log4j.PropertyConfigurator;
public class Initlog4j extends HttpServlet {
Private static final long serialversionuid = 1L;
public void Init () throws Servletexception {
String prefix = Getservletcontext (). Getrealpath ("/");
prefix = prefix.replace ("//", "/");
String file = Getinitparameter ("Log4j-init-file");
If the log4j-init-file is not set and then no point in trying
if (file! = null) {
Propertyconfigurator.configure (prefix + file);
}
}
}
2.2.3 defining initialization classes in Web. xml
Copy CodeThe code is as follows:
<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 Test class
Copy CodeThe code is as follows:
Package chb.test.web;
Import javax.servlet.ServletException;
Import Javax.servlet.http.HttpServlet;
Import Org.apache.log4j.Logger;
public class Initiaservlet extends HttpServlet {
protected Logger log = Logger.getlogger (Initiaservlet.class);
Private static final long serialversionuid = 8550329576989690578L;
/**
* Constructor of the object.
*/
Public Initiaservlet () {
Super ();
}
/**
* Destruction of the servlet. <br>
*/
public void Destroy () {
Super.destroy ();
}
/**
* Initialization of the servlet. <br>
*
* @throws servletexception If an error occure
*/
public void Init () throws Servletexception {
Log.debug ("Server started, log4j started working");
}
}
Detailed analysis of the use of log4j