导入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. php.ini的配置

    一.user_agent ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)') user_agent,再 ...

  2. CentOS7 安装Docker报错

    安装报错: Transaction check error:  file /usr/lib/systemd/system/blk-availability.service from install o ...

  3. 关于Java文件删除的操作

    在调用Java删除文件时,我们常常会调用file.delete();,但其实这个delete只能删除单个文件还有空文件夹,但是如果文件夹不是空,这个方法就无法删除文件了. 所以要删除有内容的文件夹,就 ...

  4. 1.7.2 Velocity Search UI

    1. Velocity Search UI solr包含了一个简单的搜索UI界面,是基于VelocityResponseWrite(也被叫做 Solritas)的.这里演示了几个有用的功能,如搜索,分 ...

  5. solr4.x配置IK2012FF智能分词+同义词配置

    本文配置环境:solr4.6+ IK2012ff +tomcat7 在Solr4.0发布以后,官方取消了BaseTokenizerFactory接口,而直接使用Lucene Analyzer标准接口T ...

  6. iOS 多线程讲解2

    1.GCD其他方法 1.GCD应用 单例模式 static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSLog(@&qu ...

  7. sql语句如何获得当前日期

    当做到报表的时候需要sql获得当前日期?怎么获得? 看一下getdate()函数 declare @DateNow nvarchar(10) set @DateNow=CONVERT(varchar( ...

  8. The requested URL Not Found问题

    遇到这么一个问题: 最近刚转到linux下工作 在本地运行localhost下的thinkphp程序时,出现 一开始以为是权限问题,把目录以及文件权限都改为777依然不起作用 后来发现是rewrite ...

  9. Kinect For Windows V2开发日志一:开发环境的配置

    算是正式进军Kinect了,前段时间学的东西现在就忘了,于是从此开始记录一下. 目前为止大部分的学习资料来自于Heresy的博客,写的非常优秀,清晰明了,十分感谢.开发语言为C++,应该会一直使用,但 ...

  10. [wordpress] determine_current_user 在get_current_user_id() 或者 wp_get_current_user()会调用

    在看了Cookie Authentication In A AngularJS WordPress Theme之后,清楚了当Wordpress在中使用get_current_user_id() 或者w ...