You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2015/11/29 04:53:47 UTC
logging-log4j2 git commit: LOG4J2-1173 Fixed rollover error when
copying to a directory mapped to a remote Linux host.
Repository: logging-log4j2
Updated Branches:
refs/heads/master 2855e9705 -> 220d6b850
LOG4J2-1173 Fixed rollover error when copying to a directory mapped to a
remote Linux host.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/220d6b85
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/220d6b85
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/220d6b85
Branch: refs/heads/master
Commit: 220d6b850cff04b0cd835667a342082326f0b6b9
Parents: 2855e97
Author: rpopma <rp...@apache.org>
Authored: Sun Nov 29 12:54:04 2015 +0900
Committer: rpopma <rp...@apache.org>
Committed: Sun Nov 29 12:54:04 2015 +0900
----------------------------------------------------------------------
.../rolling/action/FileRenameAction.java | 31 +++++++++++++++-----
src/changes/changes.xml | 3 ++
2 files changed, 26 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/220d6b85/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
index 32cff00..4337eec 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
@@ -17,8 +17,10 @@
package org.apache.logging.log4j.core.appender.rolling.action;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.io.IOException;
-import java.nio.file.Files;
+import java.nio.channels.FileChannel;
/**
* File rename action.
@@ -43,8 +45,8 @@ public class FileRenameAction extends AbstractAction {
/**
* Creates an FileRenameAction.
*
- * @param src current file name.
- * @param dst new file name.
+ * @param src current file name.
+ * @param dst new file name.
* @param renameEmptyFiles if true, rename file even if empty, otherwise delete empty files.
*/
public FileRenameAction(final File src, final File dst, final boolean renameEmptyFiles) {
@@ -65,6 +67,7 @@ public class FileRenameAction extends AbstractAction {
/**
* Gets the destination.
+ *
* @return the destination.
*/
public File getDestination() {
@@ -73,6 +76,7 @@ public class FileRenameAction extends AbstractAction {
/**
* Gets the source.
+ *
* @return the source.
*/
public File getSource() {
@@ -81,6 +85,7 @@ public class FileRenameAction extends AbstractAction {
/**
* Whether to rename empty files. If true, rename empty files, otherwise delete empty files.
+ *
* @return Whether to rename empty files.
*/
public boolean isRenameEmptyFiles() {
@@ -90,8 +95,8 @@ public class FileRenameAction extends AbstractAction {
/**
* Rename file.
*
- * @param source current file name.
- * @param destination new file name.
+ * @param source current file name.
+ * @param destination new file name.
* @param renameEmptyFiles if true, rename file even if empty, otherwise delete empty files.
* @return true if successfully renamed.
*/
@@ -115,7 +120,7 @@ public class FileRenameAction extends AbstractAction {
return source.delete();
} catch (final IOException iex) {
LOGGER.error("Unable to rename file {} to {} - {}", source.getAbsolutePath(),
- destination.getAbsolutePath(), iex.getMessage());
+ destination.getAbsolutePath(), iex.getMessage());
}
}
return true;
@@ -125,7 +130,7 @@ public class FileRenameAction extends AbstractAction {
return source.delete();
} catch (final IOException iex) {
LOGGER.error("Unable to rename file {} to {} - {}", source.getAbsolutePath(),
- destination.getAbsolutePath(), iex.getMessage());
+ destination.getAbsolutePath(), iex.getMessage());
}
}
} else {
@@ -143,7 +148,17 @@ public class FileRenameAction extends AbstractAction {
if (!destination.exists()) {
destination.createNewFile();
}
- Files.copy(source.toPath(), destination.toPath());
+
+ // LOG4J2-1173: Files.copy(source.toPath(), destination.toPath()) throws IOException
+ // when copying to a directory mapped to a remote Linux host
+
+ try (FileInputStream srcStream = new FileInputStream(source);
+ FileOutputStream destStream = new FileOutputStream(destination);
+ FileChannel srcChannel = srcStream.getChannel();
+ FileChannel destChannel = destStream.getChannel();) {
+
+ destChannel.transferFrom(srcChannel, 0, srcChannel.size());
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/220d6b85/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5829213..9ebbb46 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,6 +24,9 @@
</properties>
<body>
<release version="2.5" date="2015-MM-DD" description="GA Release 2.5">
+ <action issue="LOG4J2-1173" dev="rpopma" type="fix">
+ Fixed rollover error when copying to a directory mapped to a remote Linux host.
+ </action>
<action issue="LOG4J2-435" dev="rpopma" type="add" due-to="Robert Schaft">
Added support for custom delete actions triggered by a rollover.
</action>