Java Web动态配置log4j
导入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的更多相关文章
- java Web应用配置log4j日志记录
公司启动全国支票影像系统,有这样一个功能是和消息中间件打交道,需要记录每一个报文出错情况,因为方便后期开发人员的调试,我选用了log4j作为日志记录,好了废话不多说了! 第一步:首先建立一个WEB工程 ...
- java web.xml配置详解(转)
源出处:java web.xml配置详解 1.常规配置:每一个站的WEB-INF下都有一个web.xml的设定文件,它提供了我们站台的配置设定. web.xml定义: .站台的名称和说明 .针对环境参 ...
- 基于JMX动态配置Log4J日志级别
先来看比较low的修改日志级别的方式,在写程序里面. http://blog.gssxgss.me/java%E8%BF%90%E8%A1%8C%E6%97%B6%E5%8A%A8%E6%80%81% ...
- [置顶] java web 动态服务器
写了一个java web 动态服务器,主要通过内部类来实现,动态类使用了外部类,采用了 classforname 实例化,动态类的构造方法不能带参数, 效果都出来了,分享给有需要的 朋友.判断做的不够 ...
- 使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置
1.使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置 2.上代码:在resources目录下新建:generatorConfiguration.xml文 ...
- Java web.xml 配置技巧—动态欢迎页地址
我们的 Java Web 项目在配置web.xml 欢迎页地址默认是index.html .index.jsp ,不知道有人注意过没有,如果我要配置成/index/user.action 或者 ...
- maven web项目配置log4j,及log4j参数设置
本文为博主原创,转载须注明转载地址: 1.在maven项目中引入相关的依赖: 需要依赖的jar为: <!-- 配置日志 --> <dependency> <groupId ...
- java web中使用log4j
测试log4j的项目结构 Log4j.properties的路径为 src/config/log4j Log4j.properties文件的内容 下面定义日志输出级别是 INFO,并且配置了2个 ...
- 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 ...
随机推荐
- Java再学习——随机面试题
1.final, finally, finalize的区别 final—是修饰符,可以修饰变量.方法和类. final类不能再派生出新的子类即不可当父类: final变量必须在声明时给定初值或在构造方 ...
- Socket 之 c#实现Socket网络编程
一.命名空间: 在网络环境下,最有用的两个命名空间是System.Net和 System.Net.Sockets. 1.System.Net:通常与较高程的操作有关,例如download或upload ...
- ios-为银行卡号格式化 每隔四位添加一个空格
-(NSString *)formatterBankCardNum:(NSString *)string { NSString *tempStr=string; NSInteger size =(te ...
- Java基础知识强化之多线程笔记05:Java中继承thread类 与 实现Runnable接口的区别
1. Java中线程的创建有两种方式: (1)通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中. (2)通过实现Runnable接口,实例化Thread类. 2. ...
- PHP面向对象(二)--构造函数与析构函数
一.构造方法: 构造方法又称为构造函数,是对象被创建时自动调用的方法,用来完成类初始化的工作. 1.构造方法和其他函数一样,可以传递参数,可以设定参数默认值. 2.构造方法可以调用属性,也可以调用方法 ...
- TFS 2010 使用手册(四)备份与恢复
本文参考了http://developer.51cto.com/art/201010/229066.htm的文章. TFS的备份与恢复一直没有很完整的解决方案,要完成一个很好的备份要有很多的手动步骤才 ...
- 源自梦想 eclipse快捷键整理
Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加) ...
- Java Script基础(二) 基本语法
一.变量的声明和使用 JavaScript是一种弱类型的语言,没有明确的数据类型,在声明变量时,不需要指定变量的类型,变量的类型由赋给变量的值决定. 变量声明的语法: var 变量名; 示例: var ...
- [书目20131223]Android、iPhone、Windows Phone手机网页及网站设计:最佳实践与设计精粹 - 张亚飞
目录 第I篇 手机版专用网站设计和开发入门篇 第1章 准备创作环境和测试环境 3 1.1 使用Mobile Safari测试网页 4 1.1.1 iOS Simulator安装 5 1.1.2 使用M ...
- 第02篇. Jetty 9 实战之安装/运行/部署
一直以来,想改变一些自己早已经习惯的事情. 一直都听说jetty跟Tomcat一样,是一个web容器. 一直都是在说等等,再等等,等有时间的时候! 一直都是给自己一些逃避的理由 1. 首先从Jetty ...