注意:本文说到的log4j版本为1.2.15,使用的配置文件是属性文件(properties),如果这些与您的环境不符则请快速离开,以免耽误你的宝贵时间。
一.log4j在桌面程序中的配置
这个相对简单了,它的步骤就这样两步:
1)将log4j-1.2.15.jar引入到工程的lib目录中.
2)确保配置文件log4j.properties在程序的代码目录(如src目录,cfg目录)中,它编译后应该位于类路径classes中.
log4j.properties示例(可以拷贝使用):
- log4j.rootLogger=debug, stdout, R
-
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
- # Pattern to output the caller's file name and line number.
- log4j.appender.stdout.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
-
- log4j.appender.R=org.apache.log4j.RollingFileAppender
- log4j.appender.R.File=输出log文件.log
-
- log4j.appender.R.MaxFileSize=1000KB
- # Keep one backup file
- log4j.appender.R.MaxBackupIndex=1
-
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.R.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
要对这个文件进行修改的话,基本上改两个地方就行了。
一个是输出文件名称,一个是输出等级设置。
1) 输出文件名称:
log4j.appender.R.File=输出log文件.log
2) 输出等级:
log4j.rootLogger=debug, stdout, R
Debug说明只要是logger.debug以上的都记录
配置到这里,就结束了。下面请看如何在程序中使用log4j。
二.log4j的使用
1) 首先,那个类要用到log4j记录日志,就应该为类添加一个静态的成员变量loogger,示例如下:
- public class Main{
- private static Logger logger = Logger.getLogger(Main.class);
-
- public static void main(String[] args){
- logger.info("成员管理程序启动");
- new MemberMngCtrl();
- }
- }
2) 其次,你就可以使用logger.debug ,logger.info, logger.warn, logger.error, logger.fatal等函数(记录等级依次提高)来记录日志内容了,确实是很简单方便的。
三.log4j在Web工程中的配置
与桌面程序一样的是,properties文件也需要能被编译到classes(WEB-INF/classes/)中,建议将属性文件放在特定的目录下并设置为源码目录,另外放在WEB-INF\src下也不错。
这一步比前面稍多的是需要配置一个初始化log4j的initServlet,就是在一开始就启动的Servlet,代码如下:
- public class Log4jInit extends HttpServlet {
- private static final long serialVersionUID = -4499302208753939187L;
- static Logger logger = Logger.getLogger(Log4jInit.class);
-
- public void init(ServletConfig config) throws ServletException {
- String prefix = config.getServletContext().getRealPath("/");
- String file = config.getInitParameter("log4j");
- String filePath = prefix + file;
- Properties props = new Properties();
-
- try {
- FileInputStream istream = new FileInputStream(filePath);
- props.load(istream);
- istream.close();
-
- String logFile = prefix + props.getProperty("log4j.appender.R.File");
- props.setProperty("log4j.appender.R.File",logFile);
-
-
- PropertyConfigurator.configure(props);
- } catch (IOException e) {
- System.out.println("Could not read configuration file [" + filePath + "].");
- System.out.println("Ignoring configuration file [" + filePath + "].");
- return;
- }
- }
- }
然后,在Web.xml中配置一下,让它在一开始启动就可以了。
-
- <servlet>
- <servlet-name>log4j-init</servlet-name>
- <servlet-class>
- com.sitinspring.action.Log4jInit
- </servlet-class>
- <init-param>
- <param-name>log4j</param-name>
- <param-value>WEB-INF/classes/log4j.properties</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
全文完。