java web 项目如何加载log4j配置文件

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

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

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

Xml代码

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

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

Java代码

  1. package hb.init.log4j;
  2. import java.io.FileInputStream;
  3. import java.io.IOException;
  4. import java.util.Properties;
  5. import javax.servlet.ServletContext;
  6. import javax.servlet.ServletContextEvent;
  7. import javax.servlet.ServletContextListener;
  8. import org.apache.log4j.Logger;
  9. import org.apache.log4j.PropertyConfigurator;
  10. public class Log4jInit implements ServletContextListener{
  11. Logger log = Logger.getLogger(Log4jInit.class);
  12. public void contextDestroyed(ServletContextEvent sce) {
  13. log.info("Log4jInit contextDestroyed!");
  14. }
  15. public void contextInitialized(ServletContextEvent sce) {
  16. //得到servletContext对象的方法
  17. ServletContext sc = sce.getServletContext();
  18. //指明文件的相对路径就能够得到文件的绝对路径
  19. System.out.println(sc.getRealPath("/"));
  20. String path = sc.getRealPath("/config/log4j.properties");
  21. //启动服务器的时候加载日志的配置文件
  22. init(path,sc);
  23. log.info("log4j");
  24. }
  25. /**
  26. *
  27. * @param path 配置文件的路径
  28. * @param sc ServletContext对象
  29. */
  30. public void init(String path,ServletContext sc){
  31. FileInputStream istream = null;
  32. try{
  33. Properties props = new Properties();
  34. //加载配置文件
  35. istream = new FileInputStream(path);
  36. props.remove("log4j.appender.file.File");
  37. System.out.println(sc.getRealPath("/log/hb.log"));
  38. //指明log文件的位置
  39. props.put("log4j.appender.file.File", sc.getRealPath("/log/hb.log"));
  40. //加载文件流,加载Log4j文件的配置文件信息
  41. props.load(istream);
  42. PropertyConfigurator.configure(props);
  43. } catch (Exception ex){
  44. try {
  45. throw new Exception(ex);
  46. } catch (Exception e) {
  47. e.printStackTrace();
  48. }
  49. } finally{
  50. try {
  51. istream.close();
  52. } catch (IOException e) {
  53. e.printStackTrace();
  54. }
  55. }
  56. }
  57. }
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的配置文件的目的是为了使日志文件“放在跟工程相对路径的地方”,这样即使将项目移植到不同的操作系统上面,显示也是正常的

java web 项目如何加载log4j配置文件

时间: 2024-08-05 09:30:39

java web 项目如何加载log4j配置文件的相关文章

java web项目启动加载顺序

web.xml加载过程(步骤):       1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param> 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文. 3.容器将<context-param></context-param>转

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

如何在系统启动的时候加载log4j的配置文件呢? 1.自定义监听类并且继承“ServletContextListener”接口: 1 package cn.ibeans.common; 2 3 import java.io.File; 4 import java.util.List; 5 6 import javax.servlet.ServletContextEvent; 7 import javax.servlet.ServletContextListener; 8 9 import org

在web.xml正确加载spring配置文件的方式

ssm框架整合时一直报出没有创建实例bean的错误,一直以为是代码原因,反复测试了很久,才找到原因是spring配置文件没有正确导入,下图是我的错误示例 web.xml加载spring配置文件的方式主要依据该配置文件的名称和存放的位置不同来区别,目前主要有两种方式. 1.如果spring配置文件的名称为applicationContext.xml,并且存放在WEB-INF/目录下,那么只需要在web.xml中加入以下代码即可 <listener> <listener-class>o

web项目页面加载时,下拉框有值

1.我用的框架是springmvc和mybaitis 由于没有整个项目,直接就去请求的action  :http://localhost:8080/ytert/test/selectStoreType.action . 下面是下拉列表 后台代码查询出来仓库类型: 前台接收值: 最终效果:

理解java Web项目中的路径问题

本文以项目部署在tomcat服务器为例,其他相信也是一样的. 先说明请求页面的写法,在web中,页面路径主要写的有以下几种 1.请求重定向 2.浏览器的请求被服务器请求到新页面(我称为“转发”) 3.超链接 4.form表单提交的action 为了演示路径写法,首先先建一个项目(项目名WebPath),并建立一个servlet(PathServlet) 目录结构如下 以访问目录中index.jsp文件为例,jxf.path.PathServlet.jave中对以上四种路径的写法(红色部分) 1

脚本命令加载外部配置文件夹conf

加载log4j配置文件 Log4iConfigurer类 public class Log4iConfigurer { private static boolean INITIALIZED = false; public static void initLogger(){ if(!INITIALIZED&&!isConfigured()){ InputStream is =Log4iConfigurer.class.getClassLoader().getResourceAsStream(

spring的配置文件在web.xml中加载的方式

web.xml加载spring配置文件的方式主要依据该配置文件的名称和存放的位置不同来区别,目前主要有两种方式. 1.如果spring配置文件的名称为applicationContext.xml,并且存放在WEB-INF/目录下,那么只需要在web.xml中加入以下代码即可 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> &

使用IDEA结合MAVEN创建一个基于SpringMVC为前端JdbcTemplate为数据库组件的Java Web项目

前言 如今的Java项目,如果还使用传统的把jar包复制到目录下这种原始的方式,对于依赖管理来说实在是灾难.对某个功能需要引入某种技术包,但是你不确定是否已存在,如果分类好的话还好找,若是杂在一堆不仅头大,还身心俱疲.Maven旨在解决依赖问题,让项目结构变得精简,而Spring解决了项目中Bean的管理以及各种配置文件配置的功能轻松读入等问题,对于Java项目来说确实是福音.对于一个Web项目来说,必然需要数据库的读写,JdbcTemplate是一个Spring实现的Jdbc Support.

Spring中加载xml配置文件的六种方式

因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装入系统,这就需要利用Spring去动态加载某一位置下的配置文件,所以就总结了下Spring中加载xml配置文件的方式,我总结的有6种, xml是最常见的spring 应用系统配置源.Spring中的几种容器都支持使用xml装配bean,包括: XmlBeanFactory,ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicati