WEB系统启动时加载Log4j的配置文件

原创 2013年12月04日 10:01:54

在整个WEB系统中,为了统一的使用日志管理,需要在系统启动的时候就加载Log4j的配置文件,这样才能保证以后使用log4j的格式是一致的,便于跟踪和解决问题。

那么,如何在系统启动的时候加载log4j的配置文件呢?下面我简单的介绍一下:

 

1、在web.xml文件中添加一个“监听器”

<!-- 加载log4j的配置信息 -->
  <listener>
  	<listener-class>hb.init.log4j.Log4jInit</listener-class>
  </listener>

 

2、“监听类”继承“ServletContextListener”接口

package hb.init.log4j;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Log4jInit implements ServletContextListener{
	
	Logger log = Logger.getLogger(Log4jInit.class);
	
	public void contextDestroyed(ServletContextEvent sce) {
		log.info("Log4jInit contextDestroyed!");
	}

	public void contextInitialized(ServletContextEvent sce) {
		
		//得到servletContext对象的方法
		ServletContext sc = sce.getServletContext();
		//指明文件的相对路径就能够得到文件的绝对路径
		System.out.println(sc.getRealPath("/"));
		String path = sc.getRealPath("/config/log4j.properties");
		
		//启动服务器的时候加载日志的配置文件
		init(path,sc);
		log.info("log4j");
	}
	
	
	/**
	 * 
	 * @param path 配置文件的路径
	 * @param sc ServletContext对象
	 */
	public void init(String path,ServletContext sc){
		FileInputStream istream = null;
		try{
			Properties props = new Properties();
			//加载配置文件
			istream = new FileInputStream(path);
			props.remove("log4j.appender.file.File");
			System.out.println(sc.getRealPath("/log/hb.log"));
			//指明log文件的位置
			props.put("log4j.appender.file.File", sc.getRealPath("/log/hb.log"));
			//加载文件流,加载Log4j文件的配置文件信息
			props.load(istream);
			PropertyConfigurator.configure(props);
		} catch (Exception ex){
			try {
				throw new Exception(ex);
			} catch (Exception e) {
				e.printStackTrace();
			}
		} finally{
			try {
				istream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	
}

 

加载log4j的配置文件的目的是为了使日志文件“放在跟工程相对路径的地方”,这样即使将项目移植到不同的操作系统上面,显示也是正常的

 

 

 

 

 

配置log4j日志动态加载(不重启服务)

原文地址:http://blog.csdn.net/lk_blog/article/details/50618471 状态:测试通过,内容有效 方法一:使用spring提供的配置 ...
  • SengMay
  • SengMay
  • 2016年06月05日 02:12
  • 1345

log4j配置文件加载方式

使用背景: apache的log4j是一个功能强大的日志文件,当我们使用eclipse等IDE在项目中配置log4j的时候,需要知道我们的配置文件的加载方式以及如何被加载的。 加载方式: (1)...
  • ws15286832380
  • ws15286832380
  • 2015年09月06日 19:45
  • 2588

如何跟踪Log4j或Sl4j加载哪个配置文件进行初始化

场景:在实际的开发当中,经常会出现自己写的log4j.properties配置文件无效,要怎么跟踪实际加载的是哪个配置文件呢? 在log4j.properties和log4j.xml两个文件都存在的时...
  • yh_zeng2
  • yh_zeng2
  • 2017年07月18日 22:38
  • 338

WEB系统启动时加载Log4j的配置文件(自己写Listener形式)

在整个WEB系统中,为了统一的使用日志管理,需要在系统启动的时候就加载Log4j的配置文件,这样才能保证以后使用log4j的格式是一致的,便于跟踪和解决问题。 那么,如何在系统启动的时候加载lo...
  • JIESA
  • JIESA
  • 2016年04月28日 15:42
  • 1353

log4j配置文件详解及手动加载的方式

一、配置文件说明: 1、log4j.rootLogger=INFO, stdout, R    将等级为INFO的日志信息使用stdout和R进行输出,这里可以自己命名;     等级可分为OFF、F...
  • u012540337
  • u012540337
  • 2013年12月30日 16:09
  • 9530

在web项目下引入hibernate配置文件

在myeclipse中如何添加hibernate配置文件
  • Pythonor_clean
  • Pythonor_clean
  • 2015年06月09日 10:36
  • 1453

关于Log4j不重启重新加载配置文件

系统可能出现某些问题,我们就需要将相关的日志打印出来,就需要修改日志级别。一般情况下,都需要重启程序,但是有时候在线上要求不能重启服务,就需要动态加载配置文件。 第一种方式:利用Log4j的定时扫描功...
  • xxssyyyyssxx
  • xxssyyyyssxx
  • 2017年02月15日 16:19
  • 886

1.web项目启动时加载数据库配置文件

1.在web.xml中的配置代码 org.springframework.web.context.ContextLoaderListener Stru...
  • dczjzz
  • dczjzz
  • 2015年04月28日 18:18
  • 1733

在web项目启动时,执行某个方法

在web项目启动时,执行某个方法            在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件、初始化数据库信息等等,在项目启动...
  • cb2474600377
  • cb2474600377
  • 2015年03月24日 15:25
  • 11874

多个log4j的配置文件

log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。
  • wangqingqi20005
  • wangqingqi20005
  • 2015年09月02日 19:59
  • 1038
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WEB系统启动时加载Log4j的配置文件
举报原因:
原因补充:

(最多只允许输入30个字)