Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7846021
  • 博文数量: 594
  • 博客积分: 13065
  • 博客等级: 上将
  • 技术积分: 10323
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-26 16:44
个人简介

推荐: blog.csdn.net/aquester https://github.com/eyjian https://www.cnblogs.com/aquester http://blog.chinaunix.net/uid/20682147.html

文章分类

全部博文(594)

分类: Java

2016-04-14 10:06:41

假设有如下标准化的目录结构:
$HOME
|-- log
|-- conf
|-- bin
|-- lib
|-- data

jar包放在lib目录,启动脚本放在bin目录,日志文件放在log目录,配置文件放在conf目录(包括log4j的配置文件log4j.properties)。
在程序代码和配置文件中均不定义绝对目录如:/usr/local/myapp/log/myapp.log和/usr/local/myapp/conf/log4j.properties等。

那么在代码中可以如下实现:

  1. String path = System.getProperty("java.class.path");
  2. int first_index = path.lastIndexOf(System.getProperty("path.separator")) + 1;
  3. int last_index = path.lastIndexOf(File.separator) + 1;
  4. path = path.substring(first_index, last_index);


  5. System.setProperty("myhome", path); // "myhome"供log4j.properties使用
  6. PropertyConfigurator.configure(path + "/conf/log4j.properties");
log4j.properties中的日志文件路径配置为:
log4j.appender.stdout.File=${myhome}/log/myapp.log

这样不管在哪儿启动,都可以保持日志文件和配置文件路径不随变化。

阅读(3628) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~