Shouldn't these new modules have tests? Gary On Oct 30, 2015 12:58 AM, "Mikael Ståldal" <[email protected]> wrote:
> A lot of Scala libraries does like this. > > On Fri, Oct 30, 2015 at 4:45 AM, Gary Gregory <[email protected]> > wrote: > >> If that is the case so far, then that's that! We can deal with compatible >> versions in the future... >> >> Gary >> On Oct 29, 2015 1:35 PM, "Matt Sicker" <[email protected]> wrote: >> >>> If there's no binary compatibility between versions, it doesn't sound >>> like it's even possible to run both version 10 and 11 at the same time. >>> >>> On 29 October 2015 at 13:39, Gary Gregory <[email protected]> >>> wrote: >>> >>>> So users will have to resolve dependencies if one jar depends on our >>>> version 10 and another jar depends on version 11, right? >>>> >>>> Would it ever be possible for two of our Scala jars to run in the same >>>> classloader (right now, no, since they have the same Java package). >>>> >>>> Gary >>>> >>>> On Thu, Oct 29, 2015 at 9:09 AM, Mikael Ståldal < >>>> [email protected]> wrote: >>>> >>>>> The Java package will be the same (org.apache.logging.log4j.scala), >>>>> no version in there. >>>>> >>>>> On Thu, Oct 29, 2015 at 5:06 PM, Gary Gregory <[email protected]> >>>>> wrote: >>>>> >>>>>> Will the packages also have a version in the name? >>>>>> >>>>>> Gary >>>>>> On Oct 29, 2015 2:28 AM, "Mikael Ståldal" <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> The "_2.11" (and "_2.10" etc) suffix on Maven artifact IDs is the >>>>>>> Scala convention, and it is even implemented in the Scala build tool >>>>>>> SBT. >>>>>>> If we use "-2.11" we break that. >>>>>>> >>>>>>> http://www.scala-sbt.org/0.12.4/docs/Detailed-Topics/Cross-Build.html >>>>>>> >>>>>>> On Wed, Oct 28, 2015 at 7:57 PM, Gary Gregory < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Hi all, >>>>>>>> >>>>>>>> I find it confusing that we use two formats for versions in names: >>>>>>>> >>>>>>>> - log4j-scala_2.11 >>>>>>>> - log4j-1.2-api >>>>>>>> >>>>>>>> Shouldn't we have log4j-scala-2.11? >>>>>>>> >>>>>>>> Gary >>>>>>>> >>>>>>>> ---------- Forwarded message ---------- >>>>>>>> From: <[email protected]> >>>>>>>> Date: Wed, Oct 28, 2015 at 10:08 AM >>>>>>>> Subject: logging-log4j2 git commit: Scala 2.11 logging >>>>>>>> To: [email protected] >>>>>>>> >>>>>>>> >>>>>>>> Repository: logging-log4j2 >>>>>>>> Updated Branches: >>>>>>>> refs/heads/LOG4J-1181 [created] 968058160 >>>>>>>> >>>>>>>> >>>>>>>> Scala 2.11 logging >>>>>>>> >>>>>>>> >>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo >>>>>>>> Commit: >>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/96805816 >>>>>>>> Tree: >>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/96805816 >>>>>>>> Diff: >>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/96805816 >>>>>>>> >>>>>>>> Branch: refs/heads/LOG4J-1181 >>>>>>>> Commit: 9680581602af65eaee778e85affa9e4926acf1a2 >>>>>>>> Parents: fdce364 >>>>>>>> Author: Mikael Ståldal <[email protected]> >>>>>>>> Authored: Wed Oct 28 18:07:39 2015 +0100 >>>>>>>> Committer: Mikael Ståldal <[email protected]> >>>>>>>> Committed: Wed Oct 28 18:07:39 2015 +0100 >>>>>>>> >>>>>>>> >>>>>>>> ---------------------------------------------------------------------- >>>>>>>> log4j-scala_2.11/pom.xml | 254 >>>>>>>> +++++++++++++++++++ >>>>>>>> .../org/apache/logging/log4j/scala/Logger.scala | 211 >>>>>>>> +++++++++++++++ >>>>>>>> .../logging/log4j/scala/LoggerMacro.scala | 217 >>>>>>>> ++++++++++++++++ >>>>>>>> .../apache/logging/log4j/scala/Logging.scala | 10 + >>>>>>>> pom.xml | 6 + >>>>>>>> 5 files changed, 698 insertions(+) >>>>>>>> >>>>>>>> ---------------------------------------------------------------------- >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/96805816/log4j-scala_2.11/pom.xml >>>>>>>> >>>>>>>> ---------------------------------------------------------------------- >>>>>>>> diff --git a/log4j-scala_2.11/pom.xml b/log4j-scala_2.11/pom.xml >>>>>>>> new file mode 100644 >>>>>>>> index 0000000..81132c4 >>>>>>>> --- /dev/null >>>>>>>> +++ b/log4j-scala_2.11/pom.xml >>>>>>>> @@ -0,0 +1,254 @@ >>>>>>>> +<?xml version="1.0" encoding="UTF-8"?> >>>>>>>> +<!-- >>>>>>>> + 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. >>>>>>>> +--> >>>>>>>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" >>>>>>>> http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" >>>>>>>> http://maven.apache.org/POM/4.0.0 >>>>>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd"> >>>>>>>> + <modelVersion>4.0.0</modelVersion> >>>>>>>> + <parent> >>>>>>>> + <groupId>org.apache.logging.log4j</groupId> >>>>>>>> + <artifactId>log4j</artifactId> >>>>>>>> + <version>2.5-SNAPSHOT</version> >>>>>>>> + <relativePath>../</relativePath> >>>>>>>> + </parent> >>>>>>>> + <artifactId>log4j-scala_2.11</artifactId> >>>>>>>> + <packaging>jar</packaging> >>>>>>>> + <name>Scala warpper for Log4j API</name> >>>>>>>> + <description>Scala warpper for Log4j API</description> >>>>>>>> + <properties> >>>>>>>> + <log4jParentDir>${basedir}/..</log4jParentDir> >>>>>>>> + <projectDir>/scala_2.11</projectDir> >>>>>>>> + <scala.version>2.11.7</scala.version> >>>>>>>> + </properties> >>>>>>>> + <dependencies> >>>>>>>> + <dependency> >>>>>>>> + <groupId>org.apache.logging.log4j</groupId> >>>>>>>> + <artifactId>log4j-api</artifactId> >>>>>>>> + </dependency> >>>>>>>> + <dependency> >>>>>>>> + <groupId>org.scala-lang</groupId> >>>>>>>> + <artifactId>scala-library</artifactId> >>>>>>>> + <version>${scala.version}</version> >>>>>>>> + </dependency> >>>>>>>> + <dependency> >>>>>>>> + <groupId>org.scala-lang</groupId> >>>>>>>> + <artifactId>scala-reflect</artifactId> >>>>>>>> + <version>${scala.version}</version> >>>>>>>> + </dependency> >>>>>>>> + <dependency> >>>>>>>> + <groupId>org.apache.logging.log4j</groupId> >>>>>>>> + <artifactId>log4j-api</artifactId> >>>>>>>> + <type>test-jar</type> >>>>>>>> + <scope>test</scope> >>>>>>>> + </dependency> >>>>>>>> + <dependency> >>>>>>>> + <groupId>org.apache.logging.log4j</groupId> >>>>>>>> + <artifactId>log4j-core</artifactId> >>>>>>>> + <scope>test</scope> >>>>>>>> + </dependency> >>>>>>>> + <dependency> >>>>>>>> + <groupId>org.apache.logging.log4j</groupId> >>>>>>>> + <artifactId>log4j-core</artifactId> >>>>>>>> + <type>test-jar</type> >>>>>>>> + <scope>test</scope> >>>>>>>> + </dependency> >>>>>>>> + <dependency> >>>>>>>> + <groupId>junit</groupId> >>>>>>>> + <artifactId>junit</artifactId> >>>>>>>> + <scope>test</scope> >>>>>>>> + </dependency> >>>>>>>> + </dependencies> >>>>>>>> + <build> >>>>>>>> + <sourceDirectory>src/main/scala</sourceDirectory> >>>>>>>> + <testSourceDirectory>src/test/scala</testSourceDirectory> >>>>>>>> + <plugins> >>>>>>>> + <plugin> >>>>>>>> + <groupId>net.alchim31.maven</groupId> >>>>>>>> + <artifactId>scala-maven-plugin</artifactId> >>>>>>>> + <executions> >>>>>>>> + <execution> >>>>>>>> + <goals> >>>>>>>> + <goal>compile</goal> >>>>>>>> + <goal>testCompile</goal> >>>>>>>> + </goals> >>>>>>>> + </execution> >>>>>>>> + </executions> >>>>>>>> + </plugin> >>>>>>>> + <plugin> >>>>>>>> + <groupId>org.apache.maven.plugins</groupId> >>>>>>>> + <artifactId>maven-surefire-plugin</artifactId> >>>>>>>> + <configuration> >>>>>>>> + <excludes> >>>>>>>> + <exclude>**/*Test.java</exclude> >>>>>>>> + </excludes> >>>>>>>> + </configuration> >>>>>>>> + <executions> >>>>>>>> + <execution> >>>>>>>> + <id>default-tests</id> >>>>>>>> + <phase>test</phase> >>>>>>>> + <goals> >>>>>>>> + <goal>test</goal> >>>>>>>> + </goals> >>>>>>>> + <configuration> >>>>>>>> + <includes> >>>>>>>> + <include>**/*Test.java</include> >>>>>>>> + </includes> >>>>>>>> + <excludes> >>>>>>>> + <exclude>**/OptionalTest.java</exclude> >>>>>>>> + </excludes> >>>>>>>> + </configuration> >>>>>>>> + </execution> >>>>>>>> + <execution> >>>>>>>> + <id>test-optional</id> >>>>>>>> + <phase>test</phase> >>>>>>>> + <goals> >>>>>>>> + <goal>test</goal> >>>>>>>> + </goals> >>>>>>>> + <configuration> >>>>>>>> + <excludes> >>>>>>>> + <exclude>**/LoggerTest.java</exclude> >>>>>>>> + <exclude>**/MarkerTest.java</exclude> >>>>>>>> + <exclude>**/SerializeTest.java</exclude> >>>>>>>> + </excludes> >>>>>>>> + <includes> >>>>>>>> + <include>**/OptionalTest.java</include> >>>>>>>> + </includes> >>>>>>>> + </configuration> >>>>>>>> + </execution> >>>>>>>> + </executions> >>>>>>>> + </plugin> >>>>>>>> + <!-- Include the standard NOTICE and LICENSE --> >>>>>>>> + <plugin> >>>>>>>> + <groupId>org.apache.maven.plugins</groupId> >>>>>>>> + <artifactId>maven-remote-resources-plugin</artifactId> >>>>>>>> + <executions> >>>>>>>> + <execution> >>>>>>>> + <goals> >>>>>>>> + <goal>process</goal> >>>>>>>> + </goals> >>>>>>>> + <configuration> >>>>>>>> + <skip>false</skip> >>>>>>>> + </configuration> >>>>>>>> + </execution> >>>>>>>> + </executions> >>>>>>>> + </plugin> >>>>>>>> + <plugin> >>>>>>>> + <groupId>org.apache.felix</groupId> >>>>>>>> + <artifactId>maven-bundle-plugin</artifactId> >>>>>>>> + <configuration> >>>>>>>> + <instructions> >>>>>>>> + <Export-Package> >>>>>>>> + liquibase.ext.logging.log4j2 >>>>>>>> + </Export-Package> >>>>>>>> + </instructions> >>>>>>>> + </configuration> >>>>>>>> + </plugin> >>>>>>>> + </plugins> >>>>>>>> + </build> >>>>>>>> + <reporting> >>>>>>>> + <plugins> >>>>>>>> + <plugin> >>>>>>>> + <groupId>org.apache.maven.plugins</groupId> >>>>>>>> + <artifactId>maven-changes-plugin</artifactId> >>>>>>>> + <version>${changes.plugin.version}</version> >>>>>>>> + <reportSets> >>>>>>>> + <reportSet> >>>>>>>> + <reports> >>>>>>>> + <report>changes-report</report> >>>>>>>> + </reports> >>>>>>>> + </reportSet> >>>>>>>> + </reportSets> >>>>>>>> + <configuration> >>>>>>>> + >>>>>>>> <issueLinkTemplate>%URL%/show_bug.cgi?id=%ISSUE%</issueLinkTemplate> >>>>>>>> + <useJql>true</useJql> >>>>>>>> + </configuration> >>>>>>>> + </plugin> >>>>>>>> + <plugin> >>>>>>>> + <groupId>org.apache.maven.plugins</groupId> >>>>>>>> + <artifactId>maven-checkstyle-plugin</artifactId> >>>>>>>> + <version>${checkstyle.plugin.version}</version> >>>>>>>> + <configuration> >>>>>>>> + >>>>>>>> <!--<propertiesLocation>${vfs.parent.dir}/checkstyle.properties</propertiesLocation> >>>>>>>> --> >>>>>>>> + >>>>>>>> <configLocation>${log4jParentDir}/checkstyle.xml</configLocation> >>>>>>>> + >>>>>>>> <suppressionsLocation>${log4jParentDir}/checkstyle-suppressions.xml</suppressionsLocation> >>>>>>>> + <enableRulesSummary>false</enableRulesSummary> >>>>>>>> + <propertyExpansion>basedir=${basedir}</propertyExpansion> >>>>>>>> + >>>>>>>> <propertyExpansion>licensedir=${log4jParentDir}/checkstyle-header.txt</propertyExpansion> >>>>>>>> + </configuration> >>>>>>>> + </plugin> >>>>>>>> + <plugin> >>>>>>>> + <groupId>org.apache.maven.plugins</groupId> >>>>>>>> + <artifactId>maven-javadoc-plugin</artifactId> >>>>>>>> + <version>${javadoc.plugin.version}</version> >>>>>>>> + <configuration> >>>>>>>> + <bottom><![CDATA[<p align="center">Copyright © >>>>>>>> {inceptionYear}-{currentYear} {organizationName}. All Rights >>>>>>>> Reserved.<br /> >>>>>>>> + Apache Logging, Apache Log4j, Log4j, Apache, the >>>>>>>> Apache feather logo, the Apache Logging project logo, >>>>>>>> + and the Apache Log4j logo are trademarks of The Apache >>>>>>>> Software Foundation.</p>]]></bottom> >>>>>>>> + <!-- module link generation is completely broken in the >>>>>>>> javadoc plugin for a multi-module non-aggregating >>>>>>>> + project --> >>>>>>>> + <detectOfflineLinks>false</detectOfflineLinks> >>>>>>>> + <linksource>true</linksource> >>>>>>>> + </configuration> >>>>>>>> + <reportSets> >>>>>>>> + <reportSet> >>>>>>>> + <id>non-aggregate</id> >>>>>>>> + <reports> >>>>>>>> + <report>javadoc</report> >>>>>>>> + </reports> >>>>>>>> + </reportSet> >>>>>>>> + </reportSets> >>>>>>>> + </plugin> >>>>>>>> + <plugin> >>>>>>>> + <groupId>org.codehaus.mojo</groupId> >>>>>>>> + <artifactId>findbugs-maven-plugin</artifactId> >>>>>>>> + <version>${findbugs.plugin.version}</version> >>>>>>>> + <configuration> >>>>>>>> + <fork>true</fork> >>>>>>>> + <jvmArgs>-Duser.language=en</jvmArgs> >>>>>>>> + <threshold>Normal</threshold> >>>>>>>> + <effort>Default</effort> >>>>>>>> + >>>>>>>> <excludeFilterFile>${log4jParentDir}/findbugs-exclude-filter.xml</excludeFilterFile> >>>>>>>> + </configuration> >>>>>>>> + </plugin> >>>>>>>> + <plugin> >>>>>>>> + <groupId>org.apache.maven.plugins</groupId> >>>>>>>> + <artifactId>maven-jxr-plugin</artifactId> >>>>>>>> + <version>${jxr.plugin.version}</version> >>>>>>>> + <reportSets> >>>>>>>> + <reportSet> >>>>>>>> + <id>non-aggregate</id> >>>>>>>> + <reports> >>>>>>>> + <report>jxr</report> >>>>>>>> + </reports> >>>>>>>> + </reportSet> >>>>>>>> + <reportSet> >>>>>>>> + <id>aggregate</id> >>>>>>>> + <reports> >>>>>>>> + <report>aggregate</report> >>>>>>>> + </reports> >>>>>>>> + </reportSet> >>>>>>>> + </reportSets> >>>>>>>> + </plugin> >>>>>>>> + <plugin> >>>>>>>> + <groupId>org.apache.maven.plugins</groupId> >>>>>>>> + <artifactId>maven-pmd-plugin</artifactId> >>>>>>>> + <version>${pmd.plugin.version}</version> >>>>>>>> + <configuration> >>>>>>>> + <targetJdk>${maven.compile.target}</targetJdk> >>>>>>>> + </configuration> >>>>>>>> + </plugin> >>>>>>>> + </plugins> >>>>>>>> + </reporting> >>>>>>>> +</project> >>>>>>>> >>>>>>>> >>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/96805816/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logger.scala >>>>>>>> >>>>>>>> ---------------------------------------------------------------------- >>>>>>>> diff --git >>>>>>>> a/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logger.scala >>>>>>>> b/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logger.scala >>>>>>>> new file mode 100644 >>>>>>>> index 0000000..63cce4d >>>>>>>> --- /dev/null >>>>>>>> +++ >>>>>>>> b/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logger.scala >>>>>>>> @@ -0,0 +1,211 @@ >>>>>>>> +package org.apache.logging.log4j.scala >>>>>>>> + >>>>>>>> +import org.apache.logging.log4j.message.Message >>>>>>>> +import org.apache.logging.log4j.spi.ExtendedLogger >>>>>>>> +import org.apache.logging.log4j.{Level, Marker} >>>>>>>> + >>>>>>>> +import scala.language.experimental.macros >>>>>>>> + >>>>>>>> +class Logger(val delegate: ExtendedLogger) { >>>>>>>> + >>>>>>>> + private final val FQCN = classOf[Logger].getName >>>>>>>> + >>>>>>>> + def fatal(marker: Marker, message: Message): Unit = >>>>>>>> + macro LoggerMacro.fatalMarkerMsg >>>>>>>> + >>>>>>>> + def fatal(marker: Marker, message: Message, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.fatalMarkerMsgThrowable >>>>>>>> + >>>>>>>> + def fatal(marker: Marker, message: String): Unit = >>>>>>>> + macro LoggerMacro.fatalMarkerString >>>>>>>> + >>>>>>>> + def fatal(marker: Marker, message: String, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.fatalMarkerStringThrowable >>>>>>>> + >>>>>>>> + def fatal(message: Message): Unit = >>>>>>>> + macro LoggerMacro.fatalMsg >>>>>>>> + >>>>>>>> + def fatal(message: String): Unit = >>>>>>>> + macro LoggerMacro.fatalString >>>>>>>> + >>>>>>>> + def fatal(message: Message, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.fatalMsgThrowable >>>>>>>> + >>>>>>>> + def fatal(message: String, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.fatalStringThrowable >>>>>>>> + >>>>>>>> + def error(marker: Marker, message: Message): Unit = >>>>>>>> + macro LoggerMacro.errorMarkerMsg >>>>>>>> + >>>>>>>> + def error(marker: Marker, message: Message, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.errorMarkerMsgThrowable >>>>>>>> + >>>>>>>> + def error(marker: Marker, message: String): Unit = >>>>>>>> + macro LoggerMacro.errorMarkerString >>>>>>>> + >>>>>>>> + def error(marker: Marker, message: String, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.errorMarkerStringThrowable >>>>>>>> + >>>>>>>> + def error(message: Message): Unit = >>>>>>>> + macro LoggerMacro.errorMsg >>>>>>>> + >>>>>>>> + def error(message: String): Unit = >>>>>>>> + macro LoggerMacro.errorString >>>>>>>> + >>>>>>>> + def error(message: Message, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.errorMsgThrowable >>>>>>>> + >>>>>>>> + def error(message: String, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.errorStringThrowable >>>>>>>> + >>>>>>>> + def warn(marker: Marker, message: Message): Unit = >>>>>>>> + macro LoggerMacro.warnMarkerMsg >>>>>>>> + >>>>>>>> + def warn(marker: Marker, message: Message, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.warnMarkerMsgThrowable >>>>>>>> + >>>>>>>> + def warn(marker: Marker, message: String): Unit = >>>>>>>> + macro LoggerMacro.warnMarkerString >>>>>>>> + >>>>>>>> + def warn(marker: Marker, message: String, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.warnMarkerStringThrowable >>>>>>>> + >>>>>>>> + def warn(message: Message): Unit = >>>>>>>> + macro LoggerMacro.warnMsg >>>>>>>> + >>>>>>>> + def warn(message: String): Unit = >>>>>>>> + macro LoggerMacro.warnString >>>>>>>> + >>>>>>>> + def warn(message: Message, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.warnMsgThrowable >>>>>>>> + >>>>>>>> + def warn(message: String, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.warnStringThrowable >>>>>>>> + >>>>>>>> + def info(marker: Marker, message: Message): Unit = >>>>>>>> + macro LoggerMacro.infoMarkerMsg >>>>>>>> + >>>>>>>> + def info(marker: Marker, message: Message, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.infoMarkerMsgThrowable >>>>>>>> + >>>>>>>> + def info(marker: Marker, message: String): Unit = >>>>>>>> + macro LoggerMacro.infoMarkerString >>>>>>>> + >>>>>>>> + def info(marker: Marker, message: String, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.infoMarkerStringThrowable >>>>>>>> + >>>>>>>> + def info(message: Message): Unit = >>>>>>>> + macro LoggerMacro.infoMsg >>>>>>>> + >>>>>>>> + def info(message: String): Unit = >>>>>>>> + macro LoggerMacro.infoString >>>>>>>> + >>>>>>>> + def info(message: Message, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.infoMsgThrowable >>>>>>>> + >>>>>>>> + def info(message: String, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.infoStringThrowable >>>>>>>> + >>>>>>>> + def debug(marker: Marker, message: Message): Unit = >>>>>>>> + macro LoggerMacro.debugMarkerMsg >>>>>>>> + >>>>>>>> + def debug(marker: Marker, message: Message, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.debugMarkerMsgThrowable >>>>>>>> + >>>>>>>> + def debug(marker: Marker, message: String): Unit = >>>>>>>> + macro LoggerMacro.debugMarkerString >>>>>>>> + >>>>>>>> + def debug(marker: Marker, message: String, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.debugMarkerStringThrowable >>>>>>>> + >>>>>>>> + def debug(message: Message): Unit = >>>>>>>> + macro LoggerMacro.debugMsg >>>>>>>> + >>>>>>>> + def debug(message: String): Unit = >>>>>>>> + macro LoggerMacro.debugString >>>>>>>> + >>>>>>>> + def debug(message: Message, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.debugMsgThrowable >>>>>>>> + >>>>>>>> + def debug(message: String, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.debugStringThrowable >>>>>>>> + >>>>>>>> + def trace(marker: Marker, message: Message): Unit = >>>>>>>> + macro LoggerMacro.traceMarkerMsg >>>>>>>> + >>>>>>>> + def trace(marker: Marker, message: Message, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.traceMarkerMsgThrowable >>>>>>>> + >>>>>>>> + def trace(marker: Marker, message: String): Unit = >>>>>>>> + macro LoggerMacro.traceMarkerString >>>>>>>> + >>>>>>>> + def trace(marker: Marker, message: String, cause: Throwable): >>>>>>>> Unit = >>>>>>>> + macro LoggerMacro.traceMarkerStringThrowable >>>>>>>> + >>>>>>>> + def trace(message: Message): Unit = >>>>>>>> + macro LoggerMacro.traceMsg >>>>>>>> + >>>>>>>> + def trace(message: String): Unit = >>>>>>>> + macro LoggerMacro.traceString >>>>>>>> + >>>>>>>> + def trace(message: Message, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.traceMsgThrowable >>>>>>>> + >>>>>>>> + def trace(message: String, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.traceStringThrowable >>>>>>>> + >>>>>>>> + def log(level: Level, marker: Marker, message: Message): Unit = >>>>>>>> + macro LoggerMacro.logMarkerMsg >>>>>>>> + >>>>>>>> + def log(level: Level, marker: Marker, message: Message, cause: >>>>>>>> Throwable): Unit = >>>>>>>> + macro LoggerMacro.logMarkerMsgThrowable >>>>>>>> + >>>>>>>> + def log(level: Level, marker: Marker, message: String): Unit = >>>>>>>> + macro LoggerMacro.logMarkerString >>>>>>>> + >>>>>>>> + def log(level: Level, marker: Marker, message: String, cause: >>>>>>>> Throwable): Unit = >>>>>>>> + macro LoggerMacro.logMarkerStringThrowable >>>>>>>> + >>>>>>>> + def log(level: Level, message: Message): Unit = >>>>>>>> + macro LoggerMacro.logMsg >>>>>>>> + >>>>>>>> + def log(level: Level, message: String): Unit = >>>>>>>> + macro LoggerMacro.logString >>>>>>>> + >>>>>>>> + def log(level: Level, message: Message, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.logMsgThrowable >>>>>>>> + >>>>>>>> + def log(level: Level, message: String, cause: Throwable): Unit = >>>>>>>> + macro LoggerMacro.logStringThrowable >>>>>>>> + >>>>>>>> + def isEnabled(level: Level): Boolean = delegate.isEnabled(level) >>>>>>>> + >>>>>>>> + def isEnabled(level: Level, marker: Marker): Boolean = >>>>>>>> delegate.isEnabled(level, marker) >>>>>>>> + >>>>>>>> + def level: Level = delegate.getLevel >>>>>>>> + >>>>>>>> + def name: String = delegate.getName >>>>>>>> + >>>>>>>> + /** Should normally not be used directly from application code, >>>>>>>> but needs to be public for access by macros. >>>>>>>> + * >>>>>>>> + * @param level log level >>>>>>>> + * @param marker marker or `null` >>>>>>>> + * @param message message >>>>>>>> + * @param cause cause or `null` >>>>>>>> + */ >>>>>>>> + def logMessage(level: Level, marker: Marker, message: Message, >>>>>>>> cause: Throwable): Unit = { >>>>>>>> + delegate.logIfEnabled(FQCN, level, marker, message, cause) >>>>>>>> + } >>>>>>>> + >>>>>>>> + /** Should normally not be used directly from application code, >>>>>>>> but needs to be public for access by macros. >>>>>>>> + * >>>>>>>> + * @param level log level >>>>>>>> + * @param marker marker or `null` >>>>>>>> + * @param message message >>>>>>>> + * @param cause cause or `null` >>>>>>>> + */ >>>>>>>> + def logMessage(level: Level, marker: Marker, message: String, >>>>>>>> cause: Throwable): Unit = { >>>>>>>> + delegate.logIfEnabled(FQCN, level, marker, message, cause) >>>>>>>> + } >>>>>>>> + >>>>>>>> +} >>>>>>>> >>>>>>>> >>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/96805816/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala >>>>>>>> >>>>>>>> ---------------------------------------------------------------------- >>>>>>>> diff --git >>>>>>>> a/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala >>>>>>>> b/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala >>>>>>>> new file mode 100644 >>>>>>>> index 0000000..e8dfb3a >>>>>>>> --- /dev/null >>>>>>>> +++ >>>>>>>> b/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala >>>>>>>> @@ -0,0 +1,217 @@ >>>>>>>> +package org.apache.logging.log4j.scala >>>>>>>> + >>>>>>>> +import org.apache.logging.log4j.message.Message >>>>>>>> +import org.apache.logging.log4j.{Level, Marker} >>>>>>>> + >>>>>>>> +import scala.language.experimental.macros >>>>>>>> + >>>>>>>> +// Using the deprecated Context to be compatible with both Scala >>>>>>>> 2.10 and Scala 2.11 >>>>>>>> +//noinspection ScalaDeprecation >>>>>>>> +import scala.reflect.macros.Context >>>>>>>> + >>>>>>>> +//noinspection ScalaDeprecation >>>>>>>> +private object LoggerMacro { >>>>>>>> + >>>>>>>> + type LoggerContext = Context { type PrefixType = Logger } >>>>>>>> + >>>>>>>> + def fatalMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], >>>>>>>> message: c.Expr[Message]) = >>>>>>>> + logMarkerMsg(c)(c.universe.reify(Level.WARN), 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 fatalMarkerString(c: LoggerContext)(marker: c.Expr[Marker], >>>>>>>> message: c.Expr[String]) = >>>>>>>> + logMarkerString(c)(c.universe.reify(Level.FATAL), marker, >>>>>>>> message) >>>>>>>> + >>>>>>>> + def fatalMarkerStringThrowable(c: LoggerContext)(marker: >>>>>>>> c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logMarkerStringThrowable(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 fatalMsgThrowable(c: LoggerContext)(message: >>>>>>>> c.Expr[Message], cause: c.Expr[Throwable]) = >>>>>>>> + logMsgThrowable(c)(c.universe.reify(Level.FATAL), message, >>>>>>>> cause) >>>>>>>> + >>>>>>>> + def fatalString(c: LoggerContext)(message: c.Expr[String]) = >>>>>>>> + logString(c)(c.universe.reify(Level.FATAL), message) >>>>>>>> + >>>>>>>> + def fatalStringThrowable(c: LoggerContext)(message: >>>>>>>> c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logStringThrowable(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 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 errorMarkerString(c: LoggerContext)(marker: c.Expr[Marker], >>>>>>>> message: c.Expr[String]) = >>>>>>>> + logMarkerString(c)(c.universe.reify(Level.ERROR), marker, >>>>>>>> message) >>>>>>>> + >>>>>>>> + def errorMarkerStringThrowable(c: LoggerContext)(marker: >>>>>>>> c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logMarkerStringThrowable(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 errorMsgThrowable(c: LoggerContext)(message: >>>>>>>> c.Expr[Message], cause: c.Expr[Throwable]) = >>>>>>>> + logMsgThrowable(c)(c.universe.reify(Level.ERROR), message, >>>>>>>> cause) >>>>>>>> + >>>>>>>> + def errorString(c: LoggerContext)(message: c.Expr[String]) = >>>>>>>> + logString(c)(c.universe.reify(Level.ERROR), message) >>>>>>>> + >>>>>>>> + def errorStringThrowable(c: LoggerContext)(message: >>>>>>>> c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logStringThrowable(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 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 warnMarkerString(c: LoggerContext)(marker: c.Expr[Marker], >>>>>>>> message: c.Expr[String]) = >>>>>>>> + logMarkerString(c)(c.universe.reify(Level.WARN), marker, >>>>>>>> message) >>>>>>>> + >>>>>>>> + def warnMarkerStringThrowable(c: LoggerContext)(marker: >>>>>>>> c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logMarkerStringThrowable(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 warnMsgThrowable(c: LoggerContext)(message: c.Expr[Message], >>>>>>>> cause: c.Expr[Throwable]) = >>>>>>>> + logMsgThrowable(c)(c.universe.reify(Level.WARN), message, >>>>>>>> cause) >>>>>>>> + >>>>>>>> + def warnString(c: LoggerContext)(message: c.Expr[String]) = >>>>>>>> + logString(c)(c.universe.reify(Level.WARN), message) >>>>>>>> + >>>>>>>> + def warnStringThrowable(c: LoggerContext)(message: >>>>>>>> c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logStringThrowable(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 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 infoMarkerString(c: LoggerContext)(marker: c.Expr[Marker], >>>>>>>> message: c.Expr[String]) = >>>>>>>> + logMarkerString(c)(c.universe.reify(Level.INFO), marker, >>>>>>>> message) >>>>>>>> + >>>>>>>> + def infoMarkerStringThrowable(c: LoggerContext)(marker: >>>>>>>> c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logMarkerStringThrowable(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 infoMsgThrowable(c: LoggerContext)(message: c.Expr[Message], >>>>>>>> cause: c.Expr[Throwable]) = >>>>>>>> + logMsgThrowable(c)(c.universe.reify(Level.INFO), message, >>>>>>>> cause) >>>>>>>> + >>>>>>>> + def infoString(c: LoggerContext)(message: c.Expr[String]) = >>>>>>>> + logString(c)(c.universe.reify(Level.INFO), message) >>>>>>>> + >>>>>>>> + def infoStringThrowable(c: LoggerContext)(message: >>>>>>>> c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logStringThrowable(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 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 debugMarkerString(c: LoggerContext)(marker: c.Expr[Marker], >>>>>>>> message: c.Expr[String]) = >>>>>>>> + logMarkerString(c)(c.universe.reify(Level.DEBUG), marker, >>>>>>>> message) >>>>>>>> + >>>>>>>> + def debugMarkerStringThrowable(c: LoggerContext)(marker: >>>>>>>> c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logMarkerStringThrowable(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 debugMsgThrowable(c: LoggerContext)(message: >>>>>>>> c.Expr[Message], cause: c.Expr[Throwable]) = >>>>>>>> + logMsgThrowable(c)(c.universe.reify(Level.DEBUG), message, >>>>>>>> cause) >>>>>>>> + >>>>>>>> + def debugString(c: LoggerContext)(message: c.Expr[String]) = >>>>>>>> + logString(c)(c.universe.reify(Level.DEBUG), message) >>>>>>>> + >>>>>>>> + def debugStringThrowable(c: LoggerContext)(message: >>>>>>>> c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logStringThrowable(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 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 traceMarkerString(c: LoggerContext)(marker: c.Expr[Marker], >>>>>>>> message: c.Expr[String]) = >>>>>>>> + logMarkerString(c)(c.universe.reify(Level.TRACE), marker, >>>>>>>> message) >>>>>>>> + >>>>>>>> + def traceMarkerStringThrowable(c: LoggerContext)(marker: >>>>>>>> c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logMarkerStringThrowable(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 traceMsgThrowable(c: LoggerContext)(message: >>>>>>>> c.Expr[Message], cause: c.Expr[Throwable]) = >>>>>>>> + logMsgThrowable(c)(c.universe.reify(Level.TRACE), message, >>>>>>>> cause) >>>>>>>> + >>>>>>>> + def traceString(c: LoggerContext)(message: c.Expr[String]) = >>>>>>>> + logString(c)(c.universe.reify(Level.TRACE), message) >>>>>>>> + >>>>>>>> + def traceStringThrowable(c: LoggerContext)(message: >>>>>>>> c.Expr[String], cause: c.Expr[Throwable]) = >>>>>>>> + logStringThrowable(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 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 logMarkerString(c: LoggerContext)(level: c.Expr[Level], >>>>>>>> marker: c.Expr[Marker], message: c.Expr[String]) = >>>>>>>> + 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 logMarkerStringThrowable(c: LoggerContext)(level: >>>>>>>> c.Expr[Level], marker: c.Expr[Marker], message: c.Expr[String], 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 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 logString(c: LoggerContext)(level: c.Expr[Level], message: >>>>>>>> c.Expr[String]) = >>>>>>>> + c.universe.reify( >>>>>>>> + if (c.prefix.splice.delegate.isEnabled(level.splice)) { >>>>>>>> + c.prefix.splice.logMessage(level.splice, null, >>>>>>>> message.splice, null) >>>>>>>> + } >>>>>>>> + ) >>>>>>>> + >>>>>>>> + def logStringThrowable(c: LoggerContext)(level: c.Expr[Level], >>>>>>>> message: c.Expr[String], 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) >>>>>>>> + } >>>>>>>> + ) >>>>>>>> + >>>>>>>> +} >>>>>>>> >>>>>>>> >>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/96805816/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logging.scala >>>>>>>> >>>>>>>> ---------------------------------------------------------------------- >>>>>>>> diff --git >>>>>>>> a/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logging.scala >>>>>>>> b/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logging.scala >>>>>>>> new file mode 100644 >>>>>>>> index 0000000..0b3d03d >>>>>>>> --- /dev/null >>>>>>>> +++ >>>>>>>> b/log4j-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logging.scala >>>>>>>> @@ -0,0 +1,10 @@ >>>>>>>> +package org.apache.logging.log4j.scala >>>>>>>> + >>>>>>>> +import org.apache.logging.log4j.LogManager >>>>>>>> + >>>>>>>> +trait Logging { >>>>>>>> + >>>>>>>> + protected lazy val logger: Logger = >>>>>>>> + new Logger(LogManager.getContext(getClass.getClassLoader, >>>>>>>> false).getLogger(getClass.getName)) >>>>>>>> + >>>>>>>> +} >>>>>>>> \ No newline at end of file >>>>>>>> >>>>>>>> >>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/96805816/pom.xml >>>>>>>> >>>>>>>> ---------------------------------------------------------------------- >>>>>>>> diff --git a/pom.xml b/pom.xml >>>>>>>> index b62f935..84cca69 100644 >>>>>>>> --- a/pom.xml >>>>>>>> +++ b/pom.xml >>>>>>>> @@ -1131,6 +1131,11 @@ >>>>>>>> </excludes> >>>>>>>> </configuration> >>>>>>>> </plugin> >>>>>>>> + <plugin> >>>>>>>> + <groupId>net.alchim31.maven</groupId> >>>>>>>> + <artifactId>scala-maven-plugin</artifactId> >>>>>>>> + <version>3.2.2</version> >>>>>>>> + </plugin> >>>>>>>> </plugins> >>>>>>>> </reporting> >>>>>>>> <distributionManagement> >>>>>>>> @@ -1167,6 +1172,7 @@ >>>>>>>> <module>log4j-iostreams</module> >>>>>>>> <module>log4j-jul</module> >>>>>>>> <module>log4j-liquibase</module> >>>>>>>> + <module>log4j-scala_2.11</module> >>>>>>>> </modules> >>>>>>>> <profiles> >>>>>>>> <profile> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> E-Mail: [email protected] | [email protected] >>>>>>>> Java Persistence with Hibernate, Second Edition >>>>>>>> <http://www.manning.com/bauer3/> >>>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>>>>>>> Spring Batch in Action <http://www.manning.com/templier/> >>>>>>>> Blog: http://garygregory.wordpress.com >>>>>>>> Home: http://garygregory.com/ >>>>>>>> Tweet! http://twitter.com/GaryGregory >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> [image: MagineTV] >>>>>>> >>>>>>> *Mikael Ståldal* >>>>>>> Senior software developer >>>>>>> >>>>>>> *Magine TV* >>>>>>> [email protected] >>>>>>> Regeringsgatan 25 | 111 53 Stockholm, Sweden | www.magine.com >>>>>>> >>>>>>> Privileged and/or Confidential Information may be contained in this >>>>>>> message. If you are not the addressee indicated in this message >>>>>>> (or responsible for delivery of the message to such a person), you >>>>>>> may not copy or deliver this message to anyone. In such case, >>>>>>> you should destroy this message and kindly notify the sender by >>>>>>> reply email. >>>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> [image: MagineTV] >>>>> >>>>> *Mikael Ståldal* >>>>> Senior software developer >>>>> >>>>> *Magine TV* >>>>> [email protected] >>>>> Regeringsgatan 25 | 111 53 Stockholm, Sweden | www.magine.com >>>>> >>>>> Privileged and/or Confidential Information may be contained in this >>>>> message. If you are not the addressee indicated in this message >>>>> (or responsible for delivery of the message to such a person), you may >>>>> not copy or deliver this message to anyone. In such case, >>>>> you should destroy this message and kindly notify the sender by reply >>>>> email. >>>>> >>>> >>>> >>>> >>>> -- >>>> E-Mail: [email protected] | [email protected] >>>> Java Persistence with Hibernate, Second Edition >>>> <http://www.manning.com/bauer3/> >>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>>> Spring Batch in Action <http://www.manning.com/templier/> >>>> Blog: http://garygregory.wordpress.com >>>> Home: http://garygregory.com/ >>>> Tweet! http://twitter.com/GaryGregory >>>> >>> >>> >>> >>> -- >>> Matt Sicker <[email protected]> >>> >> > > > -- > [image: MagineTV] > > *Mikael Ståldal* > Senior software developer > > *Magine TV* > [email protected] > Regeringsgatan 25 | 111 53 Stockholm, Sweden | www.magine.com > > Privileged and/or Confidential Information may be contained in this > message. If you are not the addressee indicated in this message > (or responsible for delivery of the message to such a person), you may not > copy or deliver this message to anyone. In such case, > you should destroy this message and kindly notify the sender by reply > email. >
