Avoid to copy multiple times the temp log file.
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/DataArea.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/DataArea.java
index 51f9ffb..b33faf3 100644
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/DataArea.java
+++ b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/DataArea.java
@@ -79,8 +79,10 @@
 		if (!isInstanceDataLocationInitiliazed()) {
 			return getTemporaryLogLocation();
 		}
-		if (tmpLog != null)
+		if (tmpLog != null) {
 			copyOldLog(getTemporaryLogLocation(), getMetadataLocation().append(F_LOG));
+			tmpLog = null;
+		}
 		return getMetadataLocation().append(F_LOG);
 	}
 	protected IPath getTemporaryLogLocation() {
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java
index 669934e..b60f4e0 100644
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java
+++ b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/InternalPlatform.java
@@ -471,7 +471,7 @@
 		options = (DebugOptions) debugTracker.getService(); //TODO This is not good, but is avoids problems
 		initializeDebugFlags();
 		initialized = true;
-		platformLog = new PlatformLogWriter(getMetaArea().getLogLocation().toFile());
+		platformLog = new PlatformLogWriter();
 		addLogListener(platformLog);
 		if ("true".equals(System.getProperty("eclipse.consoleLog"))) {
 			consoleLog = new PlatformLogWriter(System.out);
diff --git a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformLogWriter.java b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformLogWriter.java
index c8189d1..234cca6 100644
--- a/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformLogWriter.java
+++ b/bundles/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/PlatformLogWriter.java
@@ -40,8 +40,7 @@
 		LINE_SEPARATOR = s == null ? "\n" : s; //$NON-NLS-1$
 	}
 
-	public PlatformLogWriter(File file) {
-		this.logFile = file;
+	public PlatformLogWriter() {
 	}
 	/**
 	 * This constructor should only be used to pass System.out .
@@ -64,8 +63,8 @@
 	 */
 	public synchronized void logging(IStatus status, String plugin) {
 		// thread safety: (Concurrency003)
-		if (logFile != null)
-			openLogFile();
+		setLogFileLocation();
+		openLogFile();
 		if (log == null)
 			log = logForStream(System.err);
 		try {
@@ -92,8 +91,12 @@
 			}
 		} finally {
 			log = null;
+			logFile = null;
 		}
 	}
+	protected void setLogFileLocation() {
+		logFile = InternalPlatform.getDefault().getMetaArea().getLogLocation().toFile();
+	}
 	protected void openLogFile() {
 		try {
 			log = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(logFile.getAbsolutePath(), true), "UTF-8")); //$NON-NLS-1$