diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetExecutable.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetExecutable.scala index ea0098b9f6a8dd4b79371a2317cf9c6f9ccf61fd..0acc5f348c65a878926d64e3482008ff037505f8 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetExecutable.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetExecutable.scala @@ -1,8 +1,9 @@ package nl.lumc.sasc.biopet.core import java.util.Properties +import org.apache.log4j.Logger -object BiopetExecutable { +object BiopetExecutable extends Logging { val modules: Map[String, List[MainCommand]] = Map( "pipeline" -> List( @@ -108,4 +109,17 @@ object BiopetExecutable { prop.load(getClass.getClassLoader.getResourceAsStream("git.properties")) prop.getProperty("git.commit.id.abbrev") } + + def checkDirtyBuild(logger: Logger) { + val prop = new Properties() + prop.load(getClass.getClassLoader.getResourceAsStream("git.properties")) + val describeShort = prop.getProperty("git.commit.id.describe-short") + if (describeShort.endsWith("-dirty")) { + logger.warn("**********************************************************") + logger.warn("* This JAR was built while there are uncommited changes. *") + logger.warn("* Reproducible results are *not* guaranteed. *") + logger.warn("**********************************************************") + } + } + checkDirtyBuild(logger) } diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/Logging.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/Logging.scala new file mode 100644 index 0000000000000000000000000000000000000000..9b8197de1acdc1ca492760b931180e09176068bb --- /dev/null +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/Logging.scala @@ -0,0 +1,27 @@ +package nl.lumc.sasc.biopet.core + +import java.text.SimpleDateFormat +import java.util.Calendar +import org.apache.log4j.Logger +import org.apache.log4j.WriterAppender +import org.apache.log4j.helpers.DateLayout + +trait Logging { + protected val logger = Logger.getLogger(getClass.getSimpleName.split("\\$").last) + + private[core] val logLayout = new DateLayout() { + val ignoresThrowable = false + def format(event: org.apache.log4j.spi.LoggingEvent): String = { + val calendar: Calendar = Calendar.getInstance + calendar.setTimeInMillis(event.getTimeStamp) + val formatter: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + val formattedDate: String = formatter.format(calendar.getTime) + var logLevel = event.getLevel.toString + while (logLevel.size < 6) logLevel += " " + logLevel + " [" + formattedDate + "] [" + event.getLoggerName + "] " + event.getMessage + "\n" + } + } + private[core] val stderrAppender = new WriterAppender(logLayout, sys.process.stderr) + logger.setLevel(org.apache.log4j.Level.INFO) + logger.addAppender(stderrAppender) +} diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/PipelineCommand.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/PipelineCommand.scala index 52fff146557defe6fbad314106024ca42d83f792..6a245cdfd121fc45b2be6d153397d7f88bb06072 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/PipelineCommand.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/PipelineCommand.scala @@ -1,8 +1,8 @@ package nl.lumc.sasc.biopet.core -import org.broadinstitute.gatk.queue.util.Logging +import org.broadinstitute.gatk.queue.util.{ Logging => GatkLogging } -trait PipelineCommand extends MainCommand with Logging { +trait PipelineCommand extends MainCommand with GatkLogging { def pipeline = "/" + getClass.getName.stripSuffix("$").replaceAll("\\.", "/") + ".class" diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/ToolCommand.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/ToolCommand.scala index 067194d3175c91563c041fd3cec06e2fa2bd7678..0a5dc8428cec541fd6cf1b967893e7266bcb1575 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/ToolCommand.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/ToolCommand.scala @@ -1,14 +1,9 @@ package nl.lumc.sasc.biopet.core -import java.text.SimpleDateFormat -import java.util.Calendar -import org.apache.log4j.Logger import org.apache.log4j.WriterAppender -import org.apache.log4j.helpers.DateLayout -import org.apache.log4j.spi.LoggingEvent import java.io.File -trait ToolCommand extends MainCommand { +trait ToolCommand extends MainCommand with Logging { abstract class AbstractArgs { } @@ -45,22 +40,4 @@ trait ToolCommand extends MainCommand { type Args <: AbstractArgs type OptParser <: AbstractOptParser - - protected val logger = Logger.getLogger(commandName) - - private val logLayout = new DateLayout() { - val ignoresThrowable = false - def format(event: org.apache.log4j.spi.LoggingEvent): String = { - val calendar: Calendar = Calendar.getInstance - calendar.setTimeInMillis(event.getTimeStamp) - val formatter: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - val formattedDate: String = formatter.format(calendar.getTime) - var logLevel = event.getLevel.toString - while (logLevel.size < 6) logLevel += " " - logLevel + " [" + formattedDate + "] [" + event.getLoggerName + "] " + event.getMessage + "\n" - } - } - private val stderrAppender = new WriterAppender(logLayout, sys.process.stderr) - logger.setLevel(org.apache.log4j.Level.INFO) - logger.addAppender(stderrAppender) } \ No newline at end of file