Yes, I am working on that. On Fri, Oct 30, 2015 at 12:41 PM, Gary Gregory <garydgreg...@gmail.com> wrote:
> Shouldn't these new modules have tests? > > Gary > On Oct 30, 2015 12:58 AM, "Mikael Ståldal" <mikael.stal...@magine.com> > wrote: > >> A lot of Scala libraries does like this. >> >> On Fri, Oct 30, 2015 at 4:45 AM, Gary Gregory <garydgreg...@gmail.com> >> 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" <boa...@gmail.com> 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 <garydgreg...@gmail.com> >>>> 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 < >>>>> mikael.stal...@magine.com> 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 <garydgreg...@gmail.com >>>>>> > wrote: >>>>>> >>>>>>> Will the packages also have a version in the name? >>>>>>> >>>>>>> Gary >>>>>>> On Oct 29, 2015 2:28 AM, "Mikael Ståldal" <mikael.stal...@magine.com> >>>>>>> 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 < >>>>>>>> garydgreg...@gmail.com> 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: <mi...@apache.org> >>>>>>>>> Date: Wed, Oct 28, 2015 at 10:08 AM >>>>>>>>> Subject: logging-log4j2 git commit: Scala 2.11 logging >>>>>>>>> To: comm...@logging.apache.org >>>>>>>>> >>>>>>>>> >>>>>>>>> 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 <mikael.stal...@magine.com> >>>>>>>>> Authored: Wed Oct 28 18:07:39 2015 +0100 >>>>>>>>> Committer: Mikael Ståldal <mikael.stal...@magine.com> >>>>>>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>>> 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* >>>>>>>> mikael.stal...@magine.com >>>>>>>> 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* >>>>>> mikael.stal...@magine.com >>>>>> 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: garydgreg...@gmail.com | ggreg...@apache.org >>>>> 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 <boa...@gmail.com> >>>> >>> >> >> >> -- >> [image: MagineTV] >> >> *Mikael Ståldal* >> Senior software developer >> >> *Magine TV* >> mikael.stal...@magine.com >> 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* mikael.stal...@magine.com 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.