导入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. linux连接静态库

    在项目中发现,使用 -l连接某个库时,如果存在同名的静态库(.a)和动态库(.so),默认会连接.so 那么如何指定连接静态库呢?如果有多个库,有些要连接静态库.有些要连接动态库,连接选项该如何指定呢 ...

  2. web前端知识体系大全

    1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的 ...

  3. iOS UIwebView html 字符串转换

    解析json字段是一段html串,平常解析出来都能在uiwebview上正常显示,这却出现以下状况,文本内容夹杂好多不需要显示的字符,例如: NSString*string =@"<s ...

  4. [算法练习]最长公共子串(LCS)

    题目说明: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的.比如"bab"和"caba"的最长公共子串是"ba"和" ...

  5. Django升级1.6之后出现“Bad Request (400)”错误的解决方案

    Django从1.4升级到1.6之后发现之前的网站都无法访问了,会出现“Bad Request (400)”的错误,搜了半天终于找到了解决办法. 解决方法很简单: 在settings.py里面添加: ...

  6. Oracle基础 (十一)字符串函数

    一.字符串函数 LENGTH(char1,char2) SELECT LENGTH('abc def gh') FROM dual; --获取字符串的长度,包含空格 结果: CONCAT(char1, ...

  7. oracle-SQL语言基础-事务控制命令命令

    事务控制命令命令 COMMITROLLBACKSAVEPOINTSET TRANSACTION 当第一条可执行的SQL语句开始执行,数据库事务就开始.随着下面任一事件发生,数据库事务结束:执行COMM ...

  8. Sqlite3笔记

    .tables 查看表.databases 创建数据库alter table 表名 RENAME TO 新表名ALTER TABLE 表名 add column 列名 datatype [DEFAUL ...

  9. Entityframework Code First 系列之项目搭建

    Entityframework(以下简称EF)是微软推出的一个ORM(Object Relational Mapping)框架. 优缺点 优点: 易上手,语法简单,查询容易 更新快,不断补足 缺点: ...

  10. 【ERROR】---Error executing "adb devices":ADB server didn't ACK

    搭建环境     ionic emulate android 的时候出现问题 端口占用,找到占用端口的程序,结束进程再启动 重新ionic emulate android 还是报错,闪了一下说fail ...