Resolve out any symlinks before starting logging

This way site_path can be on NFS, logs/ can be a symlink to a local
disk directory, and the NFS mount can temporarily disappear without
the logging being affected.

Change-Id: I190860237f91ba593bb39e58795d20a42c7cdc0b
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/ErrorLogFile.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/ErrorLogFile.java
index 8bf5ee5..14c8d9f 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/ErrorLogFile.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/ErrorLogFile.java
@@ -30,6 +30,7 @@
 
 import java.io.File;
 import java.io.FileNotFoundException;
+import java.io.IOException;
 
 public class ErrorLogFile {
   static final String LOG_NAME = "error_log";
@@ -64,7 +65,7 @@
     dst.setName(LOG_NAME);
     dst.setLayout(layout);
     dst.setEncoding("UTF-8");
-    dst.setFile(new File(logdir, LOG_NAME).getAbsolutePath());
+    dst.setFile(new File(resolve(logdir), LOG_NAME).getPath());
     dst.setImmediateFlush(true);
     dst.setAppend(true);
     dst.setThreshold(Level.INFO);
@@ -88,6 +89,14 @@
     };
   }
 
+  private static File resolve(final File logs_dir) {
+    try {
+      return logs_dir.getCanonicalFile();
+    } catch (IOException e) {
+      return logs_dir.getAbsoluteFile();
+    }
+  }
+
   private ErrorLogFile() {
   }
 
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java
index c579e67..2e45fc5 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java
@@ -69,7 +69,15 @@
 
   @Inject
   LogFileCompressor(final SitePaths site) {
-    logs_dir = site.logs_dir;
+    logs_dir = resolve(site.logs_dir);
+  }
+
+  private static File resolve(final File logs_dir) {
+    try {
+      return logs_dir.getCanonicalFile();
+    } catch (IOException e) {
+      return logs_dir.getAbsoluteFile();
+    }
   }
 
   @Override