Author: burn Date: Tue Oct 6 15:11:10 2015 New Revision: 1707070 URL: http://svn.apache.org/viewvc?rev=1707070&view=rev Log: UIMA-4617 Make log-dir relative to run-time working-dir
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java?rev=1707070&r1=1707069&r2=1707070&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java Tue Oct 6 15:11:10 2015 @@ -97,6 +97,7 @@ public abstract class CliBase /* * Get log directory or employ default log directory if not specified + * UIMA-4617 Make it relative to the run-time working directory, not HOME */ String getLogDirectory() { @@ -105,17 +106,20 @@ public abstract class CliBase if(log_directory == null) { // no log directory was specified - default to user's home + "/ducc/logs" log_directory = System.getProperty("user.home") + IDucc.userLogsSubDirectory; + } + + File f; + if (log_directory.startsWith(File.separator)) { + f = new File(log_directory); } else { - if(log_directory.startsWith(File.separator)) { - // absolute log directory was specified - } else { - // relative log directory was specified - default to user's home + relative directory - if(log_directory.endsWith(File.separator)) { - log_directory = System.getProperty("user.home") + log_directory; - } - else { - log_directory = System.getProperty("user.home") + File.separator+log_directory; - } + // Make the log directory relative to the run-time working directory + // NOTE: the working-directory is ALWAYS present when the logging-directory is specified + String working_directory = cli_props.getProperty(UiOption.WorkingDirectory.pname()); + f = new File(working_directory, log_directory); + try { + log_directory = f.getCanonicalPath(); + } catch (IOException e) { + throw new IllegalArgumentException("getLogDirectory: Cannot get full name of log directory " + log_directory); } } @@ -125,8 +129,6 @@ public abstract class CliBase * make sure the logdir is actually legal. * JD may also be creating it so to reduce any race or NFS delay blindly create and then test */ - File f = new File(log_directory); - f.mkdirs(); if ( ! f.exists() ) { throw new IllegalArgumentException("getLogDirectory: Cannot create log directory " + log_directory); @@ -316,10 +318,11 @@ public abstract class CliBase // This is not used by DUCC ... allows ducc-mon to display the origin of a job cli_props.setProperty(UiOption.SubmitPid.pname(), ManagementFactory.getRuntimeMXBean().getName()); + // First set working-directory as the log-directory may be relative to it + setWorkingDirectory(); if ( load_defaults && (getLogDirectory() == null) ) { throw new IllegalArgumentException("Cannot access log directory."); } - setWorkingDirectory(); setUser(); //NodeIdentity ni = new NodeIdentity(); UIMA-3899, use getHostAddress() directly. jrc