导入log4j的jar包,

在web.xml中做如下配置

  <!-- Log4j Configuration -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>myapplication.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value><!-- 重新加载log4j配置的间隔时间 ms -->
</context-param>

在WEB-INF下建立文件log4j.properties

内容如下

log4j.rootLogger=INFO, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${user.home}/myapplication.log
log4j.appender.logfile.MaxFileSize=512KB
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

可根据不同的需求进行不同的配置。

在web页面上做个选择logging level的页面,选择logging level,传入servlet,

  
  //查询logging level,并传到web页面
  @RequestMapping(value="/logging_view", method = RequestMethod.GET)
public String toLoggingView(HttpServletRequest request,Model model){
Properties props = new Properties();
try {
       //读取log4j.properties文件的内容
String path = SystemController.class.getClassLoader().getResource("").toURI().getPath();
InputStream in = new BufferedInputStream(new FileInputStream(
path+"../log4j.properties"));//这个是log4j.properties的文件路径,根据自己的servlet的path自行配置
props.load(in);
String value = props.getProperty("log4j.rootLogger");
logger.debug("log4j.rootLogger键的值是:"+ value);
model.addAttribute("rootLogger", value);
in.close();
} catch (URISyntaxException e) {
logger.error("SystemController : logging_view : URISyntaxException:"+e);
} catch (FileNotFoundException e) {
logger.error("SystemController : logging_view : FileNotFoundException:"+e);
} catch (IOException e) {
logger.error("SystemController : logging_view : IOException:"+e);
}
return SessionHandler.verifySession(request, "logging_view");
}
//获取web页面传的数据,设置logging level
@RequestMapping(value="/setLoggingLevel", method = RequestMethod.POST)
public String setLoggingLevel(@RequestParam String rootLogger, @RequestParam String loggerLevel,
HttpServletRequest request, Model model){
RequestContext requestContext = new RequestContext(request);
String[] loggers = rootLogger.split(",");
loggers[0] = loggerLevel;
String logging = "";
for(int i = 0; i < loggers.length; i++){
logging += loggers[i]+",";
}
logging = logging.substring(0, logging.length()-1);
Properties props = new Properties();
try {
       //将logging level写入log4j.properties文件
String path = SystemController.class.getClassLoader().getResource("").toURI().getPath()+"../log4j.properties";
InputStream in = new BufferedInputStream(new FileInputStream(
path));
props.load(in);
OutputStream fos = new FileOutputStream(path);
props.setProperty("log4j.rootLogger", logging);
props.store(fos,"last update");
String value = props.getProperty("log4j.rootLogger");
logger.debug(value);
//关闭文件
in.close();
fos.close();
List<String> list = new ArrayList<String>();
list.add(requestContext.getMessage("logging.level"));
if(value.split(",")[0].equals(loggerLevel)){
model.addAttribute("msg", requestContext.getMessage("edit.success",list));
}else{
model.addAttribute("msg", requestContext.getMessage("edit.failed",list));
}
} catch (URISyntaxException e) {
logger.error("SystemController : logging_view : URISyntaxException:"+e);
} catch (FileNotFoundException e) {
logger.error("SystemController : logging_view : FileNotFoundException:"+e);
} catch (IOException e) {
logger.error("SystemController : logging_view : IOException:"+e);
}
return "msg";
}

这样就完成了,log4j的其他配置,一样按照上面的方法做就行。

Java Web动态配置log4j的更多相关文章

  1. java Web应用配置log4j日志记录

    公司启动全国支票影像系统,有这样一个功能是和消息中间件打交道,需要记录每一个报文出错情况,因为方便后期开发人员的调试,我选用了log4j作为日志记录,好了废话不多说了! 第一步:首先建立一个WEB工程 ...

  2. java web.xml配置详解(转)

    源出处:java web.xml配置详解 1.常规配置:每一个站的WEB-INF下都有一个web.xml的设定文件,它提供了我们站台的配置设定. web.xml定义: .站台的名称和说明 .针对环境参 ...

  3. 基于JMX动态配置Log4J日志级别

    先来看比较low的修改日志级别的方式,在写程序里面. http://blog.gssxgss.me/java%E8%BF%90%E8%A1%8C%E6%97%B6%E5%8A%A8%E6%80%81% ...

  4. [置顶] java web 动态服务器

    写了一个java web 动态服务器,主要通过内部类来实现,动态类使用了外部类,采用了 classforname 实例化,动态类的构造方法不能带参数, 效果都出来了,分享给有需要的 朋友.判断做的不够 ...

  5. 使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置

    1.使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置 2.上代码:在resources目录下新建:generatorConfiguration.xml文 ...

  6. Java web.xml 配置技巧—动态欢迎页地址

    我们的 Java   Web  项目在配置web.xml 欢迎页地址默认是index.html .index.jsp ,不知道有人注意过没有,如果我要配置成/index/user.action  或者 ...

  7. maven web项目配置log4j,及log4j参数设置

    本文为博主原创,转载须注明转载地址: 1.在maven项目中引入相关的依赖: 需要依赖的jar为: <!-- 配置日志 --> <dependency> <groupId ...

  8. java web中使用log4j

    测试log4j的项目结构 Log4j.properties的路径为    src/config/log4j Log4j.properties文件的内容 下面定义日志输出级别是 INFO,并且配置了2个 ...

  9. eclipse通过maven建立java se工程配置log4j,打包成zip,将jar包和配置文件分开,并以bat和sh文件启动java程序

    一.新建maven的java工程 1.eclipse里file-new-other,选择maven Project 2.选中 Use default Workspace location,然后 nex ...

随机推荐

  1. 关于apache的重启

    一:Apache重起的最好方法apachectl graceful http://blog.csdn.net/qianling3439/article/details/8622618 二:请问apac ...

  2. html、css、js的命名规范

    最佳原则 坚持制定好的代码规范. 无论团队人数多少,代码应该同出一门. 项目命名 全部采用小写方式, 以下划线分隔. 例:my_project_name 目录命名 参照项目命名规则: 有复数结构时,要 ...

  3. C# 文本框 TextChanged 延时触发

    public partial class DelayTextBox : TextBox { #region private globals private System.Timers.Timer De ...

  4. WPF 之 跳转

    WPF的跳转有两种:一是windows窗体,另外一种是page页. 1.windows窗体跳转 1)先实例化目标窗体: 2)然后将目标窗体show(). 例如:有两个窗体Main和Login,要想点击 ...

  5. DM 之 全解析

    一.设计模式的分类 二十三大设计模式,分为三大类: 1. 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 2. 结构型模式,共七种:适配器模式.装饰器模式.代理模式. ...

  6. 跨平台轻量级redis、ssdb代理服务器(C++ 11编写)

    dbproxy 是我业余采用C++11编写的跨平台代理服务器(并使用lua和自己的网络库),以扩展系统负载,同时使用多个后端数据库,后端数据库支持redis和ssdb. 需要由用户自己编写lua脚本控 ...

  7. iOS tabbar 控制器基本使用

    RootViewController *rootVC=[[RootViewController alloc] init] SignInViewController *signVC = [[SignIn ...

  8. 【Linux/Ubuntu学习5】Ubuntu 下android 开发,eclipse不能识别手机

    ubuntu下eclipse不能识别手机解决方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1) 在终端运行 lsusb 会发现结果 ...

  9. uva 216 Getting in Line 最短路,全排列暴力做法

    题目给出离散的点,要求求出一笔把所有点都连上的最短路径. 最多才8个点,果断用暴力求. 用next_permutation举出全排列,计算出路程,记录最短路径. 这题也可以用dfs回溯暴力,但是用最小 ...

  10. centos安装ruby on rails

      最近研究svn使用http协议,但网上大多都是apache整合svn,我不想使用apache+svn,google翻了很多页终于让我找到了,但要求先安装ruby on rails,所以就有了下面的 ...