aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/scala/org/apache/spark/util/FileLogger.scala
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/scala/org/apache/spark/util/FileLogger.scala')
-rw-r--r--core/src/main/scala/org/apache/spark/util/FileLogger.scala27
1 files changed, 15 insertions, 12 deletions
diff --git a/core/src/main/scala/org/apache/spark/util/FileLogger.scala b/core/src/main/scala/org/apache/spark/util/FileLogger.scala
index b5f2ec6831..0080a8b342 100644
--- a/core/src/main/scala/org/apache/spark/util/FileLogger.scala
+++ b/core/src/main/scala/org/apache/spark/util/FileLogger.scala
@@ -49,7 +49,7 @@ private[spark] class FileLogger(
}
private val fileSystem = Utils.getHadoopFileSystem(new URI(logDir))
- private var fileIndex = 0
+ var fileIndex = 0
// Only used if compression is enabled
private lazy val compressionCodec = CompressionCodec.createCodec(conf)
@@ -57,10 +57,9 @@ private[spark] class FileLogger(
// Only defined if the file system scheme is not local
private var hadoopDataStream: Option[FSDataOutputStream] = None
- private var writer: Option[PrintWriter] = {
- createLogDir()
- Some(createWriter())
- }
+ private var writer: Option[PrintWriter] = None
+
+ createLogDir()
/**
* Create a logging directory with the given path.
@@ -84,8 +83,8 @@ private[spark] class FileLogger(
/**
* Create a new writer for the file identified by the given path.
*/
- private def createWriter(): PrintWriter = {
- val logPath = logDir + "/" + fileIndex
+ private def createWriter(fileName: String): PrintWriter = {
+ val logPath = logDir + "/" + fileName
val uri = new URI(logPath)
/* The Hadoop LocalFileSystem (r1.0.4) has known issues with syncing (HADOOP-7844).
@@ -147,13 +146,17 @@ private[spark] class FileLogger(
}
/**
- * Start a writer for a new file if one does not already exit.
+ * Start a writer for a new file, closing the existing one if it exists.
+ * @param fileName Name of the new file, defaulting to the file index if not provided.
*/
- def start() {
- writer.getOrElse {
- fileIndex += 1
- writer = Some(createWriter())
+ def newFile(fileName: String = "") {
+ fileIndex += 1
+ writer.foreach(_.close())
+ val name = fileName match {
+ case "" => fileIndex.toString
+ case _ => fileName
}
+ writer = Some(createWriter(name))
}
/**