Fix packaging issues with macro file
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j-scala/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j-scala/commit/53cfa5db Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-scala/tree/53cfa5db Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-scala/diff/53cfa5db Branch: refs/heads/master Commit: 53cfa5db91e59f28026032ba0ab341001a3e78a9 Parents: 47ba596 Author: Matt Sicker <[email protected]> Authored: Thu Mar 29 15:04:22 2018 -0500 Committer: Matt Sicker <[email protected]> Committed: Thu Mar 29 15:04:22 2018 -0500 ---------------------------------------------------------------------- Jenkinsfile | 4 +- build.sbt | 42 +- project/Dependencies.scala | 17 +- .../logging/log4j/scala/LoggerMacro.scala | 425 +++++++++++++++++++ .../logging/log4j/scala/LoggerMacro.scala | 425 ------------------- 5 files changed, 466 insertions(+), 447 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j-scala/blob/53cfa5db/Jenkinsfile ---------------------------------------------------------------------- diff --git a/Jenkinsfile b/Jenkinsfile index a117fc0..032d4d1 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -42,9 +42,9 @@ pipeline { when { branch 'master' } steps { ansiColor('xterm') { + sh './sbt -batch "+ publish"' // FIXME: LOG4J2-2291 - //sh './sbt -batch "+ publish"' - archiveArtifacts artifacts: 'target/**/*.jar', fingerprint: true + archiveArtifacts artifacts: 'target/repository/**' } } } http://git-wip-us.apache.org/repos/asf/logging-log4j-scala/blob/53cfa5db/build.sbt ---------------------------------------------------------------------- diff --git a/build.sbt b/build.sbt index 5cc1c21..118337c 100644 --- a/build.sbt +++ b/build.sbt @@ -1,4 +1,5 @@ import Dependencies._ +//import OsgiKeys._ lazy val metadataSettings = Seq( organization := "org.apache.logging.log4j", @@ -45,41 +46,48 @@ lazy val publishSettings = Seq( publishArtifact in Test := false, publishTo := { if (isSnapshot.value) { - Some("Apache Snapshots" at "https://repository.apache.org/content/repositories/snapshots") + // FIXME: LOG4J2-2291 + //Some("Apache Snapshots" at "https://repository.apache.org/content/repositories/snapshots") + Some(Resolver.file("file", file("target/repository/"))) } else { Some("Apache Releases" at "https://repository.apache.org/service/local/staging/deploy/maven2") } - }, - credentials += Credentials(Path.userHome / ".ivy2" / ".credentials"), + } +// credentials += Credentials(Path.userHome / ".ivy2" / ".credentials") // managedResources // resourceGenerators in Compile += inlineTask(Seq(file("LICENSE.txt"), file("NOTICE.txt"))) ) lazy val releaseSettings = Seq( - releaseCrossBuild := true + releaseCrossBuild := true, + apiURL := Some(url(s"https://logging.apache.org/log4j/scala/log4j-api-scala_${scalaBinaryVersion.value}/scaladocs/")) ) lazy val apiDependencies = Seq( libraryDependencies ++= Seq( - "org.scala-lang" % "scala-reflect" % scalaVersion.value, - "org.apache.logging.log4j" % "log4j-api" % log4j, - "org.apache.logging.log4j" % "log4j-api" % log4j % Test classifier "tests", - "junit" % "junit" % junit % Test, - "org.scalatest" %% "scalatest" % scalatest % Test, - "org.mockito" % "mockito-core" % mockito % Test + scalaReflect(scalaVersion.value), + osgiCoreApi, + log4jApi, + log4jApiTests, + junit, + scalatest, + mockito ) ) lazy val apiInputFiles = Seq( - sources in Compile := { - val filteredFiles = { - for ((_, minor) <- CrossVersion.partialVersion(scalaVersion.value) if minor == 10) - yield ((baseDirectory.value / "src" / "main" / "scala") ** "*Macro.scala").get - }.getOrElse(Seq()) - (sources in Compile).value.filterNot(filteredFiles.contains) + unmanagedSources in Compile := { + val Some((_, minor)) = CrossVersion.partialVersion(scalaVersion.value) + val extras = if (minor > 10) ((baseDirectory.value / "src" / "main" / "scala-2.11+") ** "*.scala").get else Nil + (unmanagedSources in Compile).value ++ extras } ) +//lazy val bundleSettings = osgiSettings ++ Seq( +// bundleSymbolicName := "org.apache.logging.log4j.scala", +// exportPackage := Seq("org.apache.logging.log4j.scala") +//) + lazy val root = (project in file(".")) .settings(name := "log4j-api-scala") .settings(metadataSettings: _*) @@ -88,6 +96,8 @@ lazy val root = (project in file(".")) .settings(releaseSettings: _*) .settings(apiDependencies: _*) .settings(apiInputFiles: _*) +// .enablePlugins(SbtOsgi) +// .settings(bundleSettings: _*) //lazy val nopublish = Seq( // publish := {}, http://git-wip-us.apache.org/repos/asf/logging-log4j-scala/blob/53cfa5db/project/Dependencies.scala ---------------------------------------------------------------------- diff --git a/project/Dependencies.scala b/project/Dependencies.scala index be85a27..0de9510 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -1,10 +1,19 @@ +import sbt._ + object Dependencies { val scala210 = "2.10.7" val scala211 = "2.11.12" val scala212 = "2.12.4" val scala213 = "2.13.0-M2" - val log4j = "2.11.0" - val junit = "4.12" - val scalatest = "3.0.4" - val mockito = "1.10.19" + + def scalaReflect(version: String): ModuleID = + "org.scala-lang" % "scala-reflect" % version + + val osgiCoreApi = "org.osgi" % "org.osgi.core" % "4.3.0" % Provided + private val log4jV = "2.11.0" + val log4jApi = "org.apache.logging.log4j" % "log4j-api" % log4jV + val log4jApiTests = "org.apache.logging.log4j" % "log4j-api" % log4jV % Test classifier "tests" + val junit = "junit" % "junit" % "4.12" % Test + val scalatest = "org.scalatest" %% "scalatest" % "3.0.4" % Test + val mockito = "org.mockito" % "mockito-core" % "1.10.19" % Test } http://git-wip-us.apache.org/repos/asf/logging-log4j-scala/blob/53cfa5db/src/main/scala-2.11+/org/apache/logging/log4j/scala/LoggerMacro.scala ---------------------------------------------------------------------- diff --git a/src/main/scala-2.11+/org/apache/logging/log4j/scala/LoggerMacro.scala b/src/main/scala-2.11+/org/apache/logging/log4j/scala/LoggerMacro.scala new file mode 100644 index 0000000..3b54db1 --- /dev/null +++ b/src/main/scala-2.11+/org/apache/logging/log4j/scala/LoggerMacro.scala @@ -0,0 +1,425 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache license, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the license for the specific language governing permissions and + * limitations under the license. + */ +package org.apache.logging.log4j.scala + +import org.apache.logging.log4j.message.{EntryMessage, Message} +import org.apache.logging.log4j.spi.AbstractLogger +import org.apache.logging.log4j.{Level, Marker} + +import scala.language.experimental.macros +import scala.reflect.macros.blackbox + +/** + * Inspired from [[https://github.com/typesafehub/scalalogging ScalaLogging]]. + */ +private object LoggerMacro { + + type LoggerContext = blackbox.Context { type PrefixType = Logger } + + + def fatalMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = + logMarkerMsg(c)(c.universe.reify(Level.FATAL), marker, message) + + def fatalMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = + logMarkerCseq(c)(c.universe.reify(Level.FATAL), marker, message) + + def fatalMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = + logMarkerObject(c)(c.universe.reify(Level.FATAL), marker, message) + + def fatalMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMarkerMsgThrowable(c)(c.universe.reify(Level.FATAL), marker, message, cause) + + def fatalMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logMarkerCseqThrowable(c)(c.universe.reify(Level.FATAL), marker, message, cause) + + def fatalMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logMarkerObjectThrowable(c)(c.universe.reify(Level.FATAL), marker, message, cause) + + def fatalMsg(c: LoggerContext)(message: c.Expr[Message]) = + logMsg(c)(c.universe.reify(Level.FATAL), message) + + def fatalCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = + logCseq(c)(c.universe.reify(Level.FATAL), message) + + def fatalObject(c: LoggerContext)(message: c.Expr[AnyRef]) = + logObject(c)(c.universe.reify(Level.FATAL), message) + + def fatalMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMsgThrowable(c)(c.universe.reify(Level.FATAL), message, cause) + + def fatalCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logCseqThrowable(c)(c.universe.reify(Level.FATAL), message, cause) + + def fatalObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logObjectThrowable(c)(c.universe.reify(Level.FATAL), message, cause) + + + def errorMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = + logMarkerMsg(c)(c.universe.reify(Level.ERROR), marker, message) + + def errorMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = + logMarkerCseq(c)(c.universe.reify(Level.ERROR), marker, message) + + def errorMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = + logMarkerObject(c)(c.universe.reify(Level.ERROR), marker, message) + + def errorMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMarkerMsgThrowable(c)(c.universe.reify(Level.ERROR), marker, message, cause) + + def errorMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logMarkerCseqThrowable(c)(c.universe.reify(Level.ERROR), marker, message, cause) + + def errorMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logMarkerObjectThrowable(c)(c.universe.reify(Level.ERROR), marker, message, cause) + + def errorMsg(c: LoggerContext)(message: c.Expr[Message]) = + logMsg(c)(c.universe.reify(Level.ERROR), message) + + def errorCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = + logCseq(c)(c.universe.reify(Level.ERROR), message) + + def errorObject(c: LoggerContext)(message: c.Expr[AnyRef]) = + logObject(c)(c.universe.reify(Level.ERROR), message) + + def errorMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMsgThrowable(c)(c.universe.reify(Level.ERROR), message, cause) + + def errorCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logCseqThrowable(c)(c.universe.reify(Level.ERROR), message, cause) + + def errorObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logObjectThrowable(c)(c.universe.reify(Level.ERROR), message, cause) + + + def warnMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = + logMarkerMsg(c)(c.universe.reify(Level.WARN), marker, message) + + def warnMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = + logMarkerCseq(c)(c.universe.reify(Level.WARN), marker, message) + + def warnMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = + logMarkerObject(c)(c.universe.reify(Level.WARN), marker, message) + + def warnMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMarkerMsgThrowable(c)(c.universe.reify(Level.WARN), marker, message, cause) + + def warnMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logMarkerCseqThrowable(c)(c.universe.reify(Level.WARN), marker, message, cause) + + def warnMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logMarkerObjectThrowable(c)(c.universe.reify(Level.WARN), marker, message, cause) + + def warnMsg(c: LoggerContext)(message: c.Expr[Message]) = + logMsg(c)(c.universe.reify(Level.WARN), message) + + def warnCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = + logCseq(c)(c.universe.reify(Level.WARN), message) + + def warnObject(c: LoggerContext)(message: c.Expr[AnyRef]) = + logObject(c)(c.universe.reify(Level.WARN), message) + + def warnMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMsgThrowable(c)(c.universe.reify(Level.WARN), message, cause) + + def warnCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logCseqThrowable(c)(c.universe.reify(Level.WARN), message, cause) + + def warnObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logObjectThrowable(c)(c.universe.reify(Level.WARN), message, cause) + + + def infoMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = + logMarkerMsg(c)(c.universe.reify(Level.INFO), marker, message) + + def infoMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = + logMarkerCseq(c)(c.universe.reify(Level.INFO), marker, message) + + def infoMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = + logMarkerObject(c)(c.universe.reify(Level.INFO), marker, message) + + def infoMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMarkerMsgThrowable(c)(c.universe.reify(Level.INFO), marker, message, cause) + + def infoMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logMarkerCseqThrowable(c)(c.universe.reify(Level.INFO), marker, message, cause) + + def infoMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logMarkerObjectThrowable(c)(c.universe.reify(Level.INFO), marker, message, cause) + + def infoMsg(c: LoggerContext)(message: c.Expr[Message]) = + logMsg(c)(c.universe.reify(Level.INFO), message) + + def infoCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = + logCseq(c)(c.universe.reify(Level.INFO), message) + + def infoObject(c: LoggerContext)(message: c.Expr[AnyRef]) = + logObject(c)(c.universe.reify(Level.INFO), message) + + def infoMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMsgThrowable(c)(c.universe.reify(Level.INFO), message, cause) + + def infoCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logCseqThrowable(c)(c.universe.reify(Level.INFO), message, cause) + + def infoObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logObjectThrowable(c)(c.universe.reify(Level.INFO), message, cause) + + + def debugMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = + logMarkerMsg(c)(c.universe.reify(Level.DEBUG), marker, message) + + def debugMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = + logMarkerCseq(c)(c.universe.reify(Level.DEBUG), marker, message) + + def debugMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = + logMarkerObject(c)(c.universe.reify(Level.DEBUG), marker, message) + + def debugMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMarkerMsgThrowable(c)(c.universe.reify(Level.DEBUG), marker, message, cause) + + def debugMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logMarkerCseqThrowable(c)(c.universe.reify(Level.DEBUG), marker, message, cause) + + def debugMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logMarkerObjectThrowable(c)(c.universe.reify(Level.DEBUG), marker, message, cause) + + def debugMsg(c: LoggerContext)(message: c.Expr[Message]) = + logMsg(c)(c.universe.reify(Level.DEBUG), message) + + def debugCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = + logCseq(c)(c.universe.reify(Level.DEBUG), message) + + def debugObject(c: LoggerContext)(message: c.Expr[AnyRef]) = + logObject(c)(c.universe.reify(Level.DEBUG), message) + + def debugMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMsgThrowable(c)(c.universe.reify(Level.DEBUG), message, cause) + + def debugCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logCseqThrowable(c)(c.universe.reify(Level.DEBUG), message, cause) + + def debugObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logObjectThrowable(c)(c.universe.reify(Level.DEBUG), message, cause) + + + def traceMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = + logMarkerMsg(c)(c.universe.reify(Level.TRACE), marker, message) + + def traceMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = + logMarkerCseq(c)(c.universe.reify(Level.TRACE), marker, message) + + def traceMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = + logMarkerObject(c)(c.universe.reify(Level.TRACE), marker, message) + + def traceMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMarkerMsgThrowable(c)(c.universe.reify(Level.TRACE), marker, message, cause) + + def traceMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logMarkerCseqThrowable(c)(c.universe.reify(Level.TRACE), marker, message, cause) + + def traceMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logMarkerObjectThrowable(c)(c.universe.reify(Level.TRACE), marker, message, cause) + + def traceMsg(c: LoggerContext)(message: c.Expr[Message]) = + logMsg(c)(c.universe.reify(Level.TRACE), message) + + def traceCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = + logCseq(c)(c.universe.reify(Level.TRACE), message) + + def traceObject(c: LoggerContext)(message: c.Expr[AnyRef]) = + logObject(c)(c.universe.reify(Level.TRACE), message) + + def traceMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = + logMsgThrowable(c)(c.universe.reify(Level.TRACE), message, cause) + + def traceCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + logCseqThrowable(c)(c.universe.reify(Level.TRACE), message, cause) + + def traceObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + logObjectThrowable(c)(c.universe.reify(Level.TRACE), message, cause) + + + def logMarkerMsg(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[Message]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { + c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, null) + } + ) + + def logMarkerCseq(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[CharSequence]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { + c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, null) + } + ) + + def logMarkerObject(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[AnyRef]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { + c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, null) + } + ) + + def logMarkerMsgThrowable(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { + c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, cause.splice) + } + ) + + def logMarkerCseqThrowable(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { + c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, cause.splice) + } + ) + + def logMarkerObjectThrowable(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { + c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, cause.splice) + } + ) + + def logMsg(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[Message]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice)) { + c.prefix.splice.logMessage(level.splice, null, message.splice, null) + } + ) + + def logCseq(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[CharSequence]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice)) { + c.prefix.splice.logMessage(level.splice, null, message.splice, null) + } + ) + + def logObject(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[AnyRef]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice)) { + c.prefix.splice.logMessage(level.splice, null, message.splice, null) + } + ) + + def logMsgThrowable(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[Message], cause: c.Expr[Throwable]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice)) { + c.prefix.splice.logMessage(level.splice, null, message.splice, cause.splice) + } + ) + + def logCseqThrowable(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice)) { + c.prefix.splice.logMessage(level.splice, null, message.splice, cause.splice) + } + ) + + def logObjectThrowable(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(level.splice)) { + c.prefix.splice.logMessage(level.splice, null, message.splice, cause.splice) + } + ) + + + def traceEntry(c: LoggerContext)(): c.Expr[EntryMessage] = + c.universe.reify( + c.prefix.splice.delegate.traceEntry() + ) + + def traceEntryParams(c: LoggerContext)(params: c.Expr[AnyRef]*): c.Expr[EntryMessage] = { + import c.universe._ + val isEnabled = Apply( + Select(Select(c.prefix.tree, TermName("delegate")), TermName("isEnabled")), + List( + reify(Level.TRACE).tree, + reify(AbstractLogger.ENTRY_MARKER).tree, + reify(null: AnyRef).tree, + reify(null).tree + ) + ) + + val log = Apply( + Select(Select(c.prefix.tree, TermName("delegate")), TermName("traceEntry")), + reify(null: String).tree :: (params map (_.tree)).toList + ) + c.Expr[EntryMessage](If(isEnabled, log, reify(null).tree)) + } + + + def traceEntryMessage(c: LoggerContext)(message: c.Expr[Message]): c.Expr[EntryMessage] = + c.universe.reify( + if (c.prefix.splice.delegate.isEnabled(Level.TRACE, AbstractLogger.ENTRY_MARKER, null: AnyRef, null)) { + c.prefix.splice.delegate.traceEntry(message.splice) // TODO should not do ifEnabled check + } else { + null + } + ) + + def traceExit(c: LoggerContext)(): c.Expr[Unit] = + c.universe.reify( + c.prefix.splice.delegate.traceExit() + ) + + def traceExitResult[R: c.WeakTypeTag](c: LoggerContext)(result: c.Expr[R]): c.Expr[R] = + c.universe.reify( + c.prefix.splice.delegate.traceExit(result.splice) + ) + + def traceExitEntryMessage(c: LoggerContext)(entryMessage: c.Expr[EntryMessage]): c.Expr[Unit] = + c.universe.reify( + c.prefix.splice.delegate.traceExit(entryMessage.splice) + ) + + def traceExitEntryMessageResult[R: c.WeakTypeTag](c: LoggerContext)(entryMessage: c.Expr[EntryMessage], result: c.Expr[R]): c.Expr[R] = + c.universe.reify( + c.prefix.splice.delegate.traceExit(entryMessage.splice, result.splice) + ) + + def traceExitMessageResult[R: c.WeakTypeTag](c: LoggerContext)(message: c.Expr[Message], result: c.Expr[R]): c.Expr[R] = + c.universe.reify( + { + if (message.splice != null && c.prefix.splice.delegate.isEnabled(Level.TRACE, AbstractLogger.EXIT_MARKER, message.splice, null)) { + c.prefix.splice.delegate.traceExit(message.splice, result.splice) // TODO should not do ifEnabled check + } + result.splice + } + ) + + def throwing[T <: Throwable: c.WeakTypeTag](c: LoggerContext)(t: c.Expr[T]): c.Expr[T] = + c.universe.reify( + c.prefix.splice.delegate.throwing(t.splice) + ) + + def throwingLevel[T <: Throwable: c.WeakTypeTag](c: LoggerContext)(level: c.Expr[Level], t: c.Expr[T]): c.Expr[T] = + c.universe.reify( + c.prefix.splice.delegate.throwing(level.splice, t.splice) + ) + + def catching(c: LoggerContext)(t: c.Expr[Throwable]): c.Expr[Unit] = + c.universe.reify( + c.prefix.splice.delegate.catching(t.splice) + ) + + def catchingLevel(c: LoggerContext)(level: c.Expr[Level], t: c.Expr[Throwable]): c.Expr[Unit] = + c.universe.reify( + c.prefix.splice.delegate.catching(level.splice, t.splice) + ) + +} http://git-wip-us.apache.org/repos/asf/logging-log4j-scala/blob/53cfa5db/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala ---------------------------------------------------------------------- diff --git a/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala b/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala deleted file mode 100644 index 3b54db1..0000000 --- a/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala +++ /dev/null @@ -1,425 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache license, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the license for the specific language governing permissions and - * limitations under the license. - */ -package org.apache.logging.log4j.scala - -import org.apache.logging.log4j.message.{EntryMessage, Message} -import org.apache.logging.log4j.spi.AbstractLogger -import org.apache.logging.log4j.{Level, Marker} - -import scala.language.experimental.macros -import scala.reflect.macros.blackbox - -/** - * Inspired from [[https://github.com/typesafehub/scalalogging ScalaLogging]]. - */ -private object LoggerMacro { - - type LoggerContext = blackbox.Context { type PrefixType = Logger } - - - def fatalMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = - logMarkerMsg(c)(c.universe.reify(Level.FATAL), marker, message) - - def fatalMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = - logMarkerCseq(c)(c.universe.reify(Level.FATAL), marker, message) - - def fatalMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = - logMarkerObject(c)(c.universe.reify(Level.FATAL), marker, message) - - def fatalMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMarkerMsgThrowable(c)(c.universe.reify(Level.FATAL), marker, message, cause) - - def fatalMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logMarkerCseqThrowable(c)(c.universe.reify(Level.FATAL), marker, message, cause) - - def fatalMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logMarkerObjectThrowable(c)(c.universe.reify(Level.FATAL), marker, message, cause) - - def fatalMsg(c: LoggerContext)(message: c.Expr[Message]) = - logMsg(c)(c.universe.reify(Level.FATAL), message) - - def fatalCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = - logCseq(c)(c.universe.reify(Level.FATAL), message) - - def fatalObject(c: LoggerContext)(message: c.Expr[AnyRef]) = - logObject(c)(c.universe.reify(Level.FATAL), message) - - def fatalMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMsgThrowable(c)(c.universe.reify(Level.FATAL), message, cause) - - def fatalCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logCseqThrowable(c)(c.universe.reify(Level.FATAL), message, cause) - - def fatalObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logObjectThrowable(c)(c.universe.reify(Level.FATAL), message, cause) - - - def errorMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = - logMarkerMsg(c)(c.universe.reify(Level.ERROR), marker, message) - - def errorMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = - logMarkerCseq(c)(c.universe.reify(Level.ERROR), marker, message) - - def errorMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = - logMarkerObject(c)(c.universe.reify(Level.ERROR), marker, message) - - def errorMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMarkerMsgThrowable(c)(c.universe.reify(Level.ERROR), marker, message, cause) - - def errorMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logMarkerCseqThrowable(c)(c.universe.reify(Level.ERROR), marker, message, cause) - - def errorMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logMarkerObjectThrowable(c)(c.universe.reify(Level.ERROR), marker, message, cause) - - def errorMsg(c: LoggerContext)(message: c.Expr[Message]) = - logMsg(c)(c.universe.reify(Level.ERROR), message) - - def errorCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = - logCseq(c)(c.universe.reify(Level.ERROR), message) - - def errorObject(c: LoggerContext)(message: c.Expr[AnyRef]) = - logObject(c)(c.universe.reify(Level.ERROR), message) - - def errorMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMsgThrowable(c)(c.universe.reify(Level.ERROR), message, cause) - - def errorCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logCseqThrowable(c)(c.universe.reify(Level.ERROR), message, cause) - - def errorObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logObjectThrowable(c)(c.universe.reify(Level.ERROR), message, cause) - - - def warnMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = - logMarkerMsg(c)(c.universe.reify(Level.WARN), marker, message) - - def warnMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = - logMarkerCseq(c)(c.universe.reify(Level.WARN), marker, message) - - def warnMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = - logMarkerObject(c)(c.universe.reify(Level.WARN), marker, message) - - def warnMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMarkerMsgThrowable(c)(c.universe.reify(Level.WARN), marker, message, cause) - - def warnMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logMarkerCseqThrowable(c)(c.universe.reify(Level.WARN), marker, message, cause) - - def warnMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logMarkerObjectThrowable(c)(c.universe.reify(Level.WARN), marker, message, cause) - - def warnMsg(c: LoggerContext)(message: c.Expr[Message]) = - logMsg(c)(c.universe.reify(Level.WARN), message) - - def warnCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = - logCseq(c)(c.universe.reify(Level.WARN), message) - - def warnObject(c: LoggerContext)(message: c.Expr[AnyRef]) = - logObject(c)(c.universe.reify(Level.WARN), message) - - def warnMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMsgThrowable(c)(c.universe.reify(Level.WARN), message, cause) - - def warnCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logCseqThrowable(c)(c.universe.reify(Level.WARN), message, cause) - - def warnObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logObjectThrowable(c)(c.universe.reify(Level.WARN), message, cause) - - - def infoMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = - logMarkerMsg(c)(c.universe.reify(Level.INFO), marker, message) - - def infoMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = - logMarkerCseq(c)(c.universe.reify(Level.INFO), marker, message) - - def infoMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = - logMarkerObject(c)(c.universe.reify(Level.INFO), marker, message) - - def infoMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMarkerMsgThrowable(c)(c.universe.reify(Level.INFO), marker, message, cause) - - def infoMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logMarkerCseqThrowable(c)(c.universe.reify(Level.INFO), marker, message, cause) - - def infoMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logMarkerObjectThrowable(c)(c.universe.reify(Level.INFO), marker, message, cause) - - def infoMsg(c: LoggerContext)(message: c.Expr[Message]) = - logMsg(c)(c.universe.reify(Level.INFO), message) - - def infoCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = - logCseq(c)(c.universe.reify(Level.INFO), message) - - def infoObject(c: LoggerContext)(message: c.Expr[AnyRef]) = - logObject(c)(c.universe.reify(Level.INFO), message) - - def infoMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMsgThrowable(c)(c.universe.reify(Level.INFO), message, cause) - - def infoCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logCseqThrowable(c)(c.universe.reify(Level.INFO), message, cause) - - def infoObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logObjectThrowable(c)(c.universe.reify(Level.INFO), message, cause) - - - def debugMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = - logMarkerMsg(c)(c.universe.reify(Level.DEBUG), marker, message) - - def debugMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = - logMarkerCseq(c)(c.universe.reify(Level.DEBUG), marker, message) - - def debugMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = - logMarkerObject(c)(c.universe.reify(Level.DEBUG), marker, message) - - def debugMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMarkerMsgThrowable(c)(c.universe.reify(Level.DEBUG), marker, message, cause) - - def debugMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logMarkerCseqThrowable(c)(c.universe.reify(Level.DEBUG), marker, message, cause) - - def debugMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logMarkerObjectThrowable(c)(c.universe.reify(Level.DEBUG), marker, message, cause) - - def debugMsg(c: LoggerContext)(message: c.Expr[Message]) = - logMsg(c)(c.universe.reify(Level.DEBUG), message) - - def debugCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = - logCseq(c)(c.universe.reify(Level.DEBUG), message) - - def debugObject(c: LoggerContext)(message: c.Expr[AnyRef]) = - logObject(c)(c.universe.reify(Level.DEBUG), message) - - def debugMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMsgThrowable(c)(c.universe.reify(Level.DEBUG), message, cause) - - def debugCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logCseqThrowable(c)(c.universe.reify(Level.DEBUG), message, cause) - - def debugObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logObjectThrowable(c)(c.universe.reify(Level.DEBUG), message, cause) - - - def traceMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message]) = - logMarkerMsg(c)(c.universe.reify(Level.TRACE), marker, message) - - def traceMarkerCseq(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence]) = - logMarkerCseq(c)(c.universe.reify(Level.TRACE), marker, message) - - def traceMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef]) = - logMarkerObject(c)(c.universe.reify(Level.TRACE), marker, message) - - def traceMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMarkerMsgThrowable(c)(c.universe.reify(Level.TRACE), marker, message, cause) - - def traceMarkerCseqThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logMarkerCseqThrowable(c)(c.universe.reify(Level.TRACE), marker, message, cause) - - def traceMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logMarkerObjectThrowable(c)(c.universe.reify(Level.TRACE), marker, message, cause) - - def traceMsg(c: LoggerContext)(message: c.Expr[Message]) = - logMsg(c)(c.universe.reify(Level.TRACE), message) - - def traceCseq(c: LoggerContext)(message: c.Expr[CharSequence]) = - logCseq(c)(c.universe.reify(Level.TRACE), message) - - def traceObject(c: LoggerContext)(message: c.Expr[AnyRef]) = - logObject(c)(c.universe.reify(Level.TRACE), message) - - def traceMsgThrowable(c: LoggerContext)(message: c.Expr[Message], cause: c.Expr[Throwable]) = - logMsgThrowable(c)(c.universe.reify(Level.TRACE), message, cause) - - def traceCseqThrowable(c: LoggerContext)(message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - logCseqThrowable(c)(c.universe.reify(Level.TRACE), message, cause) - - def traceObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - logObjectThrowable(c)(c.universe.reify(Level.TRACE), message, cause) - - - def logMarkerMsg(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[Message]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { - c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, null) - } - ) - - def logMarkerCseq(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[CharSequence]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { - c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, null) - } - ) - - def logMarkerObject(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[AnyRef]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { - c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, null) - } - ) - - def logMarkerMsgThrowable(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { - c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, cause.splice) - } - ) - - def logMarkerCseqThrowable(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { - c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, cause.splice) - } - ) - - def logMarkerObjectThrowable(c: LoggerContext)(level: c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) { - c.prefix.splice.logMessage(level.splice, marker.splice, message.splice, cause.splice) - } - ) - - def logMsg(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[Message]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice)) { - c.prefix.splice.logMessage(level.splice, null, message.splice, null) - } - ) - - def logCseq(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[CharSequence]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice)) { - c.prefix.splice.logMessage(level.splice, null, message.splice, null) - } - ) - - def logObject(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[AnyRef]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice)) { - c.prefix.splice.logMessage(level.splice, null, message.splice, null) - } - ) - - def logMsgThrowable(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[Message], cause: c.Expr[Throwable]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice)) { - c.prefix.splice.logMessage(level.splice, null, message.splice, cause.splice) - } - ) - - def logCseqThrowable(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[CharSequence], cause: c.Expr[Throwable]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice)) { - c.prefix.splice.logMessage(level.splice, null, message.splice, cause.splice) - } - ) - - def logObjectThrowable(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[AnyRef], cause: c.Expr[Throwable]) = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(level.splice)) { - c.prefix.splice.logMessage(level.splice, null, message.splice, cause.splice) - } - ) - - - def traceEntry(c: LoggerContext)(): c.Expr[EntryMessage] = - c.universe.reify( - c.prefix.splice.delegate.traceEntry() - ) - - def traceEntryParams(c: LoggerContext)(params: c.Expr[AnyRef]*): c.Expr[EntryMessage] = { - import c.universe._ - val isEnabled = Apply( - Select(Select(c.prefix.tree, TermName("delegate")), TermName("isEnabled")), - List( - reify(Level.TRACE).tree, - reify(AbstractLogger.ENTRY_MARKER).tree, - reify(null: AnyRef).tree, - reify(null).tree - ) - ) - - val log = Apply( - Select(Select(c.prefix.tree, TermName("delegate")), TermName("traceEntry")), - reify(null: String).tree :: (params map (_.tree)).toList - ) - c.Expr[EntryMessage](If(isEnabled, log, reify(null).tree)) - } - - - def traceEntryMessage(c: LoggerContext)(message: c.Expr[Message]): c.Expr[EntryMessage] = - c.universe.reify( - if (c.prefix.splice.delegate.isEnabled(Level.TRACE, AbstractLogger.ENTRY_MARKER, null: AnyRef, null)) { - c.prefix.splice.delegate.traceEntry(message.splice) // TODO should not do ifEnabled check - } else { - null - } - ) - - def traceExit(c: LoggerContext)(): c.Expr[Unit] = - c.universe.reify( - c.prefix.splice.delegate.traceExit() - ) - - def traceExitResult[R: c.WeakTypeTag](c: LoggerContext)(result: c.Expr[R]): c.Expr[R] = - c.universe.reify( - c.prefix.splice.delegate.traceExit(result.splice) - ) - - def traceExitEntryMessage(c: LoggerContext)(entryMessage: c.Expr[EntryMessage]): c.Expr[Unit] = - c.universe.reify( - c.prefix.splice.delegate.traceExit(entryMessage.splice) - ) - - def traceExitEntryMessageResult[R: c.WeakTypeTag](c: LoggerContext)(entryMessage: c.Expr[EntryMessage], result: c.Expr[R]): c.Expr[R] = - c.universe.reify( - c.prefix.splice.delegate.traceExit(entryMessage.splice, result.splice) - ) - - def traceExitMessageResult[R: c.WeakTypeTag](c: LoggerContext)(message: c.Expr[Message], result: c.Expr[R]): c.Expr[R] = - c.universe.reify( - { - if (message.splice != null && c.prefix.splice.delegate.isEnabled(Level.TRACE, AbstractLogger.EXIT_MARKER, message.splice, null)) { - c.prefix.splice.delegate.traceExit(message.splice, result.splice) // TODO should not do ifEnabled check - } - result.splice - } - ) - - def throwing[T <: Throwable: c.WeakTypeTag](c: LoggerContext)(t: c.Expr[T]): c.Expr[T] = - c.universe.reify( - c.prefix.splice.delegate.throwing(t.splice) - ) - - def throwingLevel[T <: Throwable: c.WeakTypeTag](c: LoggerContext)(level: c.Expr[Level], t: c.Expr[T]): c.Expr[T] = - c.universe.reify( - c.prefix.splice.delegate.throwing(level.splice, t.splice) - ) - - def catching(c: LoggerContext)(t: c.Expr[Throwable]): c.Expr[Unit] = - c.universe.reify( - c.prefix.splice.delegate.catching(t.splice) - ) - - def catchingLevel(c: LoggerContext)(level: c.Expr[Level], t: c.Expr[Throwable]): c.Expr[Unit] = - c.universe.reify( - c.prefix.splice.delegate.catching(level.splice, t.splice) - ) - -}
