WEB系统启动时加载Log4j的配置文件
如何在系统启动的时候加载log4j的配置文件呢?
1、自定义监听类并且继承“ServletContextListener”接口:
package cn.ibeans.common; import java.io.File;
import java.util.List; import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import cn.ibeans.common.util.FileUtil;
/**
*
* @author hezuoan
*
*/
public class ApplicationListener implements ServletContextListener { private static Logger log = Logger.getLogger(ApplicationListener.class);
@Override
public void contextInitialized(ServletContextEvent sce) { //获取log4j配置文件的地址
String log4jPath = ApplicationDispatchServlet.class.getResource("/").getPath() + "config/logs";
List<File> files = FileUtil.listFile(new File(log4jPath), "properties", false); if ((files == null) || (files.size() == 0)){
log.info("没有发现Log4j配置文件.");
return;
}
for (File file : files) {
//加载配置文件
PropertyConfigurator.configure(file.getPath());
}
log.info("加载Log4j配置文件完成.");
} @Override
public void contextDestroyed(ServletContextEvent sce) { } }
上述代码中FileUtil.listFile() 方法是自己封装的工具类。
/**
* 获取文件夹下的所有文件
* @param dir 文件夹路径
* @param filename 后缀名称
* @param recursive 是否递归该文件夹下的子文件夹
* @return
*/
public static List<File> listFile(File dir,final String filename, boolean recursive)
{
if (!dir.exists()) {
throw new IllegalArgumentException("目录:" + dir + "不存在");
}
if (!dir.isDirectory()) {
throw new IllegalArgumentException(dir + "不是目录");
}
FileFilter ff = null;
if ((filename == null) || (filename.length() == 0)) {
ff = new FileFilter()
{
public boolean accept(File pathname)
{
return true;
}
};
} else {
ff = new FileFilter()
{
public boolean accept(File pathname)
{
if (pathname.isDirectory()) {
return true;
}
String name = pathname.getName();
if (name.indexOf(filename) != -1) {
return true;
}
return false;
}
};
}
return listFile(dir, ff, recursive);
} private static List<File> listFile(File dir, FileFilter ff, boolean recursive)
{
List<File> list = new ArrayList<File>();
File[] subs = dir.listFiles(ff);
if ((subs != null) && (subs.length > 0)) {
for (File sub : subs) {
if (sub.isFile()) {
list.add(sub);
} else if (recursive) {
list.addAll(listFile(sub, ff, true));
}
}
}
return list;
}
2、在Web.xml 添加该监听器的配置:
<listener>
<listener-class>cn.ibeans.common.ApplicationListener</listener-class>
</listener>
加载log4j的配置文件的目的是为了使日志文件“放在跟工程相对路径的地方”,这样即使将项目移植到不同的操作系统上面,显示也是正常的。
WEB系统启动时加载Log4j的配置文件的更多相关文章
- SpringMvc 系统启动时加载数据到内存中
SpringMvc 系统启动时加载数据到内存中 学习了:http://blog.csdn.net/newstruts/article/details/18668269 https://www.cnbl ...
- web.xml中配置启动时加载的servlet,load-on-starup
web.xml中配置启动时加载的servlet,load-on-starup 使用servlet来初始化配置文件数据: 在servlet的配置当中,<load-on-startup>1&l ...
- bash启动时加载配置文件过程
本文目录: 1.1 判断是否交互式.是否登录式 1.2 几种常见的bash启动方式 1.3 加载bash环境配置文件 当用户登录系统时,会加载各种bash配置文件,还会设置或清空一系列变量,有时还会执 ...
- 使用web.xml方式加载Spring时,获取Spring context的两种方式
使用web.xml方式加载Spring时,获取Spring context的两种方式: 1.servlet方式加载时: [web.xml] <servlet> <servlet-na ...
- 【Java Web开发学习】Spring加载外部properties配置文件
[Java Web开发学习]Spring加载外部properties配置文件 转载:https://www.cnblogs.com/yangchongxing/p/9136505.html 1.声明属 ...
- web.xml组件加载顺序
在配置项目组件的过程中, 了解Tomcat加载组件顺序很有必要. 例如某些框架如Quartz的集群功能需要数据库的支持, 数据库的加载肯定要在框架组件加载之前. 经过查阅和Debug发现, web.x ...
- web.xml的加载过程配置详解
一:web.xml加载过程 简单说一下,web.xml的加载过程.当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等).首先会去读取web.xml配置文件里的配置,当这一步骤没有 ...
- interface21 - web - ContextLoaderListener(Spring Web Application Context加载流程)
前言 最近打算花点时间好好看看spring的源码,然而现在Spring的源码经过迭代的版本太多了,比较庞大,看起来比较累,所以准备从最初的版本(interface21)开始入手,仅用于学习,理解其设计 ...
- web.xml文件加载顺序
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
随机推荐
- NABCD需求分析
1. N 需求 如今的社会,每个公司每个人都有大量的信息需要处理.保管和查询,这就难免会有些信息在个人电脑中保存的位置被遗忘,需要一款简单并且实用的搜索引擎来搜索个人 所需求的信息. 2. A ...
- YUI Compressor for Sublime text2
YUI Compressor 是一个用来压缩 JS 和 CSS 文件的工具,采用Java开发. 最近压缩文件,常使用在线压缩的方式来压缩文件,一来多有不便,二来如果没有网络,只能搁置了.本文来描述如何 ...
- java 32位MD5加密的大写字符串
package com.aok.test; import java.security.MessageDigest; public class MD5Test { public static void ...
- Backbone Model——数据模型
Model是Backbone中所有数据模型的基类,用于封装原始数据,并提供对数据进行操作的方法,我们一般通过继承的方式来扩展和使用它. 如果你做过数据库开发,可能对ORM(对象关系映射)不会陌生,而B ...
- css圆环百分比
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 基于javascript实现图片懒加载(亲测有效)
这篇文章主要介绍了javascript实现图片懒加载的方法及思路,有时我们需要用懒加载,也就是延迟加载图片的方式,来提高网站的亲和力,需要的朋友可以参考下! 一.定义 图片延迟加载也称为懒加载,延迟加 ...
- 15个专业版响应式WordPress主题
当你准备创建一个新的网站,你会发现有很多的WordPress主题供你选择,它们强大而且合适.虽然大量的第三方插件可以解决脚本的问题,但这次我们要向你介绍一些完全不同于以往的主题,它们都是专业开发者开发 ...
- 大姨吗向左,美柚向右,女性健康APP路在何方?
日前,中国IT研究中心发布了<2016Q3中国女性健康管理APP市场研究报告>,报告显示大姨吗与美柚占据了整个行业的绝对优势,大姨吗的行业用户覆盖率最高,美柚则在月活用户数方面领先. 不过 ...
- css之属性部分
这篇写的是今天的学习到的属性,一共20个. 属性再多,但也要会使用,会在使用时可以记起它,才能起到它为我们所需要的作用. 样式属性 1.border CSS边框属性允许你指定一个元素边框的样式和颜色. ...
- GET请求中URL的最大长度限制总结
由于jsonp跨域请求只能通过get请求,url长度根据浏览器及服务器的不同而有不同限制. 若要支持IE的话,最大的长度为2083字符,若是中文字符的话只有2083/9=231个字符. 若是Chrom ...