假设有如下标准化的目录结构:

$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等。

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

String path = System.getProperty("java.class.path");
int first_index = path.lastIndexOf(System.getProperty("path.separator")) + 1;
int last_index = path.lastIndexOf(File.separator) + 1;
path = path.substring(first_index, last_index); System.setProperty("myhome", path); // "myhome"供log4j.properties使用
PropertyConfigurator.configure(path + "/conf/log4j.properties");

log4j.properties中的日志文件路径配置为:

log4j.appender.stdout.File=${myhome}/log/myapp.log

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

log4j日志文件路径设置的更多相关文章

  1. log4j日志相对路径,Tomcat(第三方和Springboot内置)参数catalina.home和catalina.base的设置

    关于Log4j日志相对路径的配置请看:log4j 产生的日志位置设置 和 catalina.home.catalina.base . 由于我们在Log4j的配置中引入了系统属性${catalina.b ...

  2. log4j日志文件 log4j.xml log4j.properties配置

    1,导入log4j  jar包; 2,配置log4j.xml或log4j.properties文件; ------------------------------------------------- ...

  3. Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出

    1. 第一个问题:时间少了8小时 Log4j 输出的日志中,时间比系统时间少了8小时,但是 eclipse 控制台输出的日志的时间却是对的. log4j配置如下: #all logger output ...

  4. IAR之文件路径设置

    1.命令解释 $PROJ_DIR$表示工程所在路径 $TOOLKIT_DIR$表示IAR安装目录所在头文件路径 \..\表示返回上一级目录. 2.头文件路径设置 打开工程文件,找到"opti ...

  5. Tomcat部署多个应用时日志文件路径相同引起的问题

    今天给客户部署新系统,一个 前台应用,一个后台应用,由于用的是同一个架子,日志文件路径也没改,所以两个应用的日志文件是同一个文件,这样应用运行时,就会出现只能访问一个应用的情况,如果两个应用同时访问, ...

  6. mysql日志文件路径

    SHOW VARIABLES LIKE 'general_log_file';日志文件路径SHOW VARIABLES LIKE 'log_error';错误日志文件路径SHOW VARIABLES ...

  7. log4j 日志文件(Day_19)

    详细  :   https://www.cnblogs.com/liaojie970/p/7634838.html log4j  日志文件 1 log4j.rootLogger=debug,CONSO ...

  8. Java - 自动配置log4j的日志文件路径

    目录 1 日志路径带来的痛点 2 log4j.properties文件的配置 3 彻底解决痛点 3.1 单独的Java程序包 (非Java Web项目) 3.2 Web项目 4 附录 - 获取当前项目 ...

  9. Log4j 2X 日志文件路径问题

    关于路径问题网上说啥的都有,但是也不能说人家错,只能说不适合你这个. 一开始,我用的   ${webapp.root} <RollingFile name="rollingFileSy ...

随机推荐

  1. 书单BookList

    1. <代码大全> 史蒂夫·迈克康奈尔 (Code Complete) 2. <程序员修炼之道> Andrew Hunt [读过了,非常好的一本书] (Pragmatic Pr ...

  2. object-c语法

    Objective-C:C的超集 Objective-Objective-C是C语言的严格超集--任何C语言程序不经修改就可以直接通过Objective-C编译器,在Objective-C中使用C语言 ...

  3. cprogram作业

    刘金福 SA17225205 第三次作业 url:http://blog.csdn.net/liu896749150/article/details/78176433 学号:SA17225404 姓名 ...

  4. mac版IDEA使用maven的问题

    在idea中执行maven碰到这个错误:invalid target release: 1.7.首先做了以下操作 1.查看$JAVA_HOME echo $JAVA_HOME /Library/Jav ...

  5. bed文件格式解读

    1)BED文件 BED 文件(Browser Extensible Data)格式是ucsc 的genome browser的一个格式 ,提供了一种灵活的方式来定义的数据行,以用来描述注释信息.BED ...

  6. 破解版ps

    http://www.sdifen.com/adobe-photoshop-cc.html

  7. vue 实例生命周期

    compile template into render function 编译模板渲染方法 compile el’s ouoterHtml as template 将el的outerHTML当做模板 ...

  8. swift iOS开发初步使用

    使用Xcode6-Beta 创建一个swift空的工程,新建一个UIViewController,语言选择swift. 在MainViewController.swift 添加如下代码,声明变量及cl ...

  9. Spring框架之演示JDBC的模板类

    1. 步骤一:创建数据库的表结构 create database spring_day03; use spring_day03; create table t_account( id int prim ...

  10. 原生JS获取地址了参数

    方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) {      var reg = new RegExp("( ...