Skip to content

Commit ac6df8b

Browse files
vagmcsanalytically
authored andcommitted
Functions for on demand code execution added in Logger class (#118)
* Functions for on demand code execution added in Logger class. -when[level] functions execute the given code block only if the respective log level is enabled. -Return types added to public functions. Some minor fixes to tests boolean flags in order to be more readable. * README update * when[level] functions renamed to when[level]Enabled. * README whenDebugEnabled example update * type format fixed in LoggerMacro object * scalariform run to meet formatting requirements
1 parent d968b88 commit ac6df8b

File tree

7 files changed

+228
-182
lines changed

7 files changed

+228
-182
lines changed

Diff for: README.md

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# scala-logging [![Build Status](https://travis-ci.org/lightbend/scala-logging.svg?branch=master)](https://travis-ci.org/lightbend/scala-logging)
22

3-
Scala Logging is a **convenient** and **performant** logging library wrapping [SLF4J](http://www.slf4j.org).
3+
Scala Logging is a **convenient** and **fast** logging library wrapping [SLF4J](http://www.slf4j.org).
44

55
It's convenient, because you can simply call log methods, *without* checking whether the respective log level is enabled:
66

77
```scala
88
logger.debug(s"Some $expensive message!")
99
```
1010

11-
It's performant, because thanks to Scala macros the *check-enabled-idiom* is applied and the following code is generated:
11+
It's fast, because thanks to Scala macros the *check-enabled-idiom* is applied and the following code is generated:
1212

1313
```scala
1414
if (logger.isDebugEnabled) logger.debug(s"Some $expensive message!")
@@ -76,6 +76,11 @@ these traits are mixed:
7676
```scala
7777
class MyClass extends LazyLogging {
7878
logger.debug("This is very convenient ;-)")
79+
80+
logger.whenDebugEnabled {
81+
println("This would only execute when the debug level is enabled.")
82+
(1 to 10).foreach(x => println("Scala logging is great!"))
83+
}
7984
}
8085
```
8186

Diff for: src/main/scala/com/typesafe/scalalogging/Logger.scala

+12-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package com.typesafe.scalalogging
1818

1919
import org.slf4j.{ LoggerFactory, Marker, Logger => Underlying }
20-
20+
import scala.language.experimental.macros
2121
import scala.reflect.ClassTag
2222

2323
/**
@@ -93,7 +93,7 @@ object Logger {
9393
}
9494

9595
/**
96-
* Implementation for a performant logger based on macros and an underlying `org.slf4j.Logger`.
96+
* Implementation of a fast logger based on macros and an underlying `org.slf4j.Logger`.
9797
*/
9898
@SerialVersionUID(538248225L)
9999
final class Logger private (val underlying: Underlying) extends Serializable {
@@ -112,6 +112,8 @@ final class Logger private (val underlying: Underlying) extends Serializable {
112112

113113
def error(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.errorMessageArgsMarker
114114

115+
def whenErrorEnabled(body: Unit): Unit = macro LoggerMacro.errorCode
116+
115117
// Warn
116118

117119
def warn(message: String): Unit = macro LoggerMacro.warnMessage
@@ -126,6 +128,8 @@ final class Logger private (val underlying: Underlying) extends Serializable {
126128

127129
def warn(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.warnMessageArgsMarker
128130

131+
def whenWarnEnabled(body: Unit): Unit = macro LoggerMacro.warnCode
132+
129133
// Info
130134

131135
def info(message: String): Unit = macro LoggerMacro.infoMessage
@@ -140,6 +144,8 @@ final class Logger private (val underlying: Underlying) extends Serializable {
140144

141145
def info(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.infoMessageArgsMarker
142146

147+
def whenInfoEnabled(body: Unit): Unit = macro LoggerMacro.infoCode
148+
143149
// Debug
144150

145151
def debug(message: String): Unit = macro LoggerMacro.debugMessage
@@ -154,6 +160,8 @@ final class Logger private (val underlying: Underlying) extends Serializable {
154160

155161
def debug(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.debugMessageArgsMarker
156162

163+
def whenDebugEnabled(body: Unit): Unit = macro LoggerMacro.debugCode
164+
157165
// Trace
158166

159167
def trace(message: String): Unit = macro LoggerMacro.traceMessage
@@ -168,4 +176,6 @@ final class Logger private (val underlying: Underlying) extends Serializable {
168176

169177
def trace(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.traceMessageArgsMarker
170178

179+
def whenTraceEnabled(body: Unit): Unit = macro LoggerMacro.traceCode
180+
171181
}

Diff for: src/main/scala/com/typesafe/scalalogging/LoggerMacro.scala

+73-43
Original file line numberDiff line numberDiff line change
@@ -17,233 +17,263 @@
1717
package com.typesafe.scalalogging
1818

1919
import org.slf4j.Marker
20-
import scala.reflect.macros.blackbox.Context
20+
import scala.reflect.macros.blackbox
2121

2222
private object LoggerMacro {
2323

24-
type LoggerContext = Context { type PrefixType = Logger }
24+
type LoggerContext = blackbox.Context { type PrefixType = Logger }
2525

2626
// Error
2727

28-
def errorMessage(c: LoggerContext)(message: c.Expr[String]) = {
28+
def errorMessage(c: LoggerContext)(message: c.Expr[String]): c.universe.Tree = {
2929
val (messageFormat, args) = deconstructInterpolatedMessage(c)(message)
3030
errorMessageArgs(c)(messageFormat, args: _*)
3131
}
3232

33-
def errorMessageCause(c: LoggerContext)(message: c.Expr[String], cause: c.Expr[Throwable]) = {
33+
def errorMessageCause(c: LoggerContext)(message: c.Expr[String], cause: c.Expr[Throwable]): c.universe.Tree = {
3434
import c.universe._
3535
val underlying = q"${c.prefix}.underlying"
3636
q"if ($underlying.isErrorEnabled) $underlying.error($message, $cause)"
3737
}
3838

39-
def errorMessageArgs(c: LoggerContext)(message: c.Expr[String], args: c.Expr[Any]*) = {
39+
def errorMessageArgs(c: LoggerContext)(message: c.Expr[String], args: c.Expr[Any]*): c.universe.Tree = {
4040
import c.universe._
4141
val underlying = q"${c.prefix}.underlying"
4242
val anyRefArgs = formatArgs(c)(args: _*)
4343
if (args.length == 2)
44-
q"if ($underlying.isErrorEnabled) $underlying.error($message, _root_.scala.Array(${anyRefArgs(0)}, ${anyRefArgs(1)}): _*)"
44+
q"if ($underlying.isErrorEnabled) $underlying.error($message, _root_.scala.Array(${anyRefArgs.head}, ${anyRefArgs(1)}): _*)"
4545
else
4646
q"if ($underlying.isErrorEnabled) $underlying.error($message, ..$anyRefArgs)"
4747
}
4848

49-
def errorMessageMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String]) = {
49+
def errorMessageMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String]): c.universe.Tree = {
5050
val (messageFormat, args) = deconstructInterpolatedMessage(c)(message)
5151
errorMessageArgsMarker(c)(marker, messageFormat, args: _*)
5252
}
5353

54-
def errorMessageCauseMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]) = {
54+
def errorMessageCauseMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]): c.universe.Tree = {
5555
import c.universe._
5656
val underlying = q"${c.prefix}.underlying"
5757
q"if ($underlying.isErrorEnabled) $underlying.error($marker, $message, $cause)"
5858
}
5959

60-
def errorMessageArgsMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], args: c.Expr[Any]*) = {
60+
def errorMessageArgsMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], args: c.Expr[Any]*): c.universe.Tree = {
6161
import c.universe._
6262
val underlying = q"${c.prefix}.underlying"
6363
val anyRefArgs = formatArgs(c)(args: _*)
6464
if (args.length == 2)
65-
q"if ($underlying.isErrorEnabled) $underlying.error($marker, $message, _root_.scala.Array(${anyRefArgs(0)}, ${anyRefArgs(1)}): _*)"
65+
q"if ($underlying.isErrorEnabled) $underlying.error($marker, $message, _root_.scala.Array(${anyRefArgs.head}, ${anyRefArgs(1)}): _*)"
6666
else
6767
q"if ($underlying.isErrorEnabled) $underlying.error($marker, $message, ..$anyRefArgs)"
6868
}
6969

70+
def errorCode(c: LoggerContext)(body: c.Expr[Unit]): c.universe.Tree = {
71+
import c.universe._
72+
val underlying = q"${c.prefix}.underlying"
73+
q"if ($underlying.isErrorEnabled) $body"
74+
}
75+
7076
// Warn
7177

72-
def warnMessage(c: LoggerContext)(message: c.Expr[String]) = {
78+
def warnMessage(c: LoggerContext)(message: c.Expr[String]): c.universe.Tree = {
7379
val (messageFormat, args) = deconstructInterpolatedMessage(c)(message)
7480
warnMessageArgs(c)(messageFormat, args: _*)
7581
}
7682

77-
def warnMessageCause(c: LoggerContext)(message: c.Expr[String], cause: c.Expr[Throwable]) = {
83+
def warnMessageCause(c: LoggerContext)(message: c.Expr[String], cause: c.Expr[Throwable]): c.universe.Tree = {
7884
import c.universe._
7985
val underlying = q"${c.prefix}.underlying"
8086
q"if ($underlying.isWarnEnabled) $underlying.warn($message, $cause)"
8187
}
8288

83-
def warnMessageArgs(c: LoggerContext)(message: c.Expr[String], args: c.Expr[Any]*) = {
89+
def warnMessageArgs(c: LoggerContext)(message: c.Expr[String], args: c.Expr[Any]*): c.universe.Tree = {
8490
import c.universe._
8591
val underlying = q"${c.prefix}.underlying"
8692
val anyRefArgs = formatArgs(c)(args: _*)
8793
if (args.length == 2)
88-
q"if ($underlying.isWarnEnabled) $underlying.warn($message, _root_.scala.Array(${anyRefArgs(0)}, ${anyRefArgs(1)}): _*)"
94+
q"if ($underlying.isWarnEnabled) $underlying.warn($message, _root_.scala.Array(${anyRefArgs.head}, ${anyRefArgs(1)}): _*)"
8995
else
9096
q"if ($underlying.isWarnEnabled) $underlying.warn($message, ..$anyRefArgs)"
9197
}
9298

93-
def warnMessageMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String]) = {
99+
def warnMessageMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String]): c.universe.Tree = {
94100
val (messageFormat, args) = deconstructInterpolatedMessage(c)(message)
95101
warnMessageArgsMarker(c)(marker, messageFormat, args: _*)
96102
}
97103

98-
def warnMessageCauseMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]) = {
104+
def warnMessageCauseMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]): c.universe.Tree = {
99105
import c.universe._
100106
val underlying = q"${c.prefix}.underlying"
101107
q"if ($underlying.isWarnEnabled) $underlying.warn($marker, $message, $cause)"
102108
}
103109

104-
def warnMessageArgsMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], args: c.Expr[Any]*) = {
110+
def warnMessageArgsMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], args: c.Expr[Any]*): c.universe.Tree = {
105111
import c.universe._
106112
val underlying = q"${c.prefix}.underlying"
107113
val anyRefArgs = formatArgs(c)(args: _*)
108114
if (args.length == 2)
109-
q"if ($underlying.isWarnEnabled) $underlying.warn($marker, $message, _root_.scala.Array(${anyRefArgs(0)}, ${anyRefArgs(1)}): _*)"
115+
q"if ($underlying.isWarnEnabled) $underlying.warn($marker, $message, _root_.scala.Array(${anyRefArgs.head}, ${anyRefArgs(1)}): _*)"
110116
else
111117
q"if ($underlying.isWarnEnabled) $underlying.warn($marker, $message, ..$anyRefArgs)"
112118
}
113119

120+
def warnCode(c: LoggerContext)(body: c.Expr[Unit]): c.universe.Tree = {
121+
import c.universe._
122+
val underlying = q"${c.prefix}.underlying"
123+
q"if ($underlying.isWarnEnabled) $body"
124+
}
125+
114126
// Info
115127

116-
def infoMessage(c: LoggerContext)(message: c.Expr[String]) = {
128+
def infoMessage(c: LoggerContext)(message: c.Expr[String]): c.universe.Tree = {
117129
val (messageFormat, args) = deconstructInterpolatedMessage(c)(message)
118130
infoMessageArgs(c)(messageFormat, args: _*)
119131
}
120132

121-
def infoMessageCause(c: LoggerContext)(message: c.Expr[String], cause: c.Expr[Throwable]) = {
133+
def infoMessageCause(c: LoggerContext)(message: c.Expr[String], cause: c.Expr[Throwable]): c.universe.Tree = {
122134
import c.universe._
123135
val underlying = q"${c.prefix}.underlying"
124136
q"if ($underlying.isInfoEnabled) $underlying.info($message, $cause)"
125137
}
126138

127-
def infoMessageArgs(c: LoggerContext)(message: c.Expr[String], args: c.Expr[Any]*) = {
139+
def infoMessageArgs(c: LoggerContext)(message: c.Expr[String], args: c.Expr[Any]*): c.universe.Tree = {
128140
import c.universe._
129141
val underlying = q"${c.prefix}.underlying"
130142
val anyRefArgs = formatArgs(c)(args: _*)
131143
if (args.length == 2)
132-
q"if ($underlying.isInfoEnabled) $underlying.info($message, _root_.scala.Array(${anyRefArgs(0)}, ${anyRefArgs(1)}): _*)"
144+
q"if ($underlying.isInfoEnabled) $underlying.info($message, _root_.scala.Array(${anyRefArgs.head}, ${anyRefArgs(1)}): _*)"
133145
else
134146
q"if ($underlying.isInfoEnabled) $underlying.info($message, ..$anyRefArgs)"
135147
}
136148

137-
def infoMessageMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String]) = {
149+
def infoMessageMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String]): c.universe.Tree = {
138150
val (messageFormat, args) = deconstructInterpolatedMessage(c)(message)
139151
infoMessageArgsMarker(c)(marker, messageFormat, args: _*)
140152
}
141153

142-
def infoMessageCauseMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]) = {
154+
def infoMessageCauseMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]): c.universe.Tree = {
143155
import c.universe._
144156
val underlying = q"${c.prefix}.underlying"
145157
q"if ($underlying.isInfoEnabled) $underlying.info($marker, $message, $cause)"
146158
}
147159

148-
def infoMessageArgsMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], args: c.Expr[Any]*) = {
160+
def infoMessageArgsMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], args: c.Expr[Any]*): c.universe.Tree = {
149161
import c.universe._
150162
val underlying = q"${c.prefix}.underlying"
151163
val anyRefArgs = formatArgs(c)(args: _*)
152164
if (args.length == 2)
153-
q"if ($underlying.isInfoEnabled) $underlying.info($marker, $message, _root_.scala.Array(${anyRefArgs(0)}, ${anyRefArgs(1)}): _*)"
165+
q"if ($underlying.isInfoEnabled) $underlying.info($marker, $message, _root_.scala.Array(${anyRefArgs.head}, ${anyRefArgs(1)}): _*)"
154166
else
155167
q"if ($underlying.isInfoEnabled) $underlying.info($marker, $message, ..$anyRefArgs)"
156168
}
157169

170+
def infoCode(c: LoggerContext)(body: c.Expr[Unit]): c.universe.Tree = {
171+
import c.universe._
172+
val underlying = q"${c.prefix}.underlying"
173+
q"if ($underlying.isInfoEnabled) $body"
174+
}
175+
158176
// Debug
159177

160-
def debugMessage(c: LoggerContext)(message: c.Expr[String]) = {
178+
def debugMessage(c: LoggerContext)(message: c.Expr[String]): c.universe.Tree = {
161179
val (messageFormat, args) = deconstructInterpolatedMessage(c)(message)
162180
debugMessageArgs(c)(messageFormat, args: _*)
163181
}
164182

165-
def debugMessageCause(c: LoggerContext)(message: c.Expr[String], cause: c.Expr[Throwable]) = {
183+
def debugMessageCause(c: LoggerContext)(message: c.Expr[String], cause: c.Expr[Throwable]): c.universe.Tree = {
166184
import c.universe._
167185
val underlying = q"${c.prefix}.underlying"
168186
q"if ($underlying.isDebugEnabled) $underlying.debug($message, $cause)"
169187
}
170188

171-
def debugMessageArgs(c: LoggerContext)(message: c.Expr[String], args: c.Expr[Any]*) = {
189+
def debugMessageArgs(c: LoggerContext)(message: c.Expr[String], args: c.Expr[Any]*): c.universe.Tree = {
172190
import c.universe._
173191
val underlying = q"${c.prefix}.underlying"
174192
val anyRefArgs = formatArgs(c)(args: _*)
175193
if (args.length == 2)
176-
q"if ($underlying.isDebugEnabled) $underlying.debug($message, _root_.scala.Array(${anyRefArgs(0)}, ${anyRefArgs(1)}): _*)"
194+
q"if ($underlying.isDebugEnabled) $underlying.debug($message, _root_.scala.Array(${anyRefArgs.head}, ${anyRefArgs(1)}): _*)"
177195
else
178196
q"if ($underlying.isDebugEnabled) $underlying.debug($message, ..$anyRefArgs)"
179197
}
180198

181-
def debugMessageMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String]) = {
199+
def debugMessageMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String]): c.universe.Tree = {
182200
val (messageFormat, args) = deconstructInterpolatedMessage(c)(message)
183201
debugMessageArgsMarker(c)(marker, messageFormat, args: _*)
184202
}
185203

186-
def debugMessageCauseMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]) = {
204+
def debugMessageCauseMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]): c.universe.Tree = {
187205
import c.universe._
188206
val underlying = q"${c.prefix}.underlying"
189207
q"if ($underlying.isDebugEnabled) $underlying.debug($marker, $message, $cause)"
190208
}
191209

192-
def debugMessageArgsMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], args: c.Expr[Any]*) = {
210+
def debugMessageArgsMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], args: c.Expr[Any]*): c.universe.Tree = {
193211
import c.universe._
194212
val underlying = q"${c.prefix}.underlying"
195213
val anyRefArgs = formatArgs(c)(args: _*)
196214
if (args.length == 2)
197-
q"if ($underlying.isDebugEnabled) $underlying.debug($marker, $message, _root_.scala.Array(${anyRefArgs(0)}, ${anyRefArgs(1)}): _*)"
215+
q"if ($underlying.isDebugEnabled) $underlying.debug($marker, $message, _root_.scala.Array(${anyRefArgs.head}, ${anyRefArgs(1)}): _*)"
198216
else
199217
q"if ($underlying.isDebugEnabled) $underlying.debug($marker, $message, ..$anyRefArgs)"
200218
}
201219

220+
def debugCode(c: LoggerContext)(body: c.Expr[Unit]): c.universe.Tree = {
221+
import c.universe._
222+
val underlying = q"${c.prefix}.underlying"
223+
q"if ($underlying.isDebugEnabled) $body"
224+
}
225+
202226
// Trace
203227

204-
def traceMessage(c: LoggerContext)(message: c.Expr[String]) = {
228+
def traceMessage(c: LoggerContext)(message: c.Expr[String]): c.universe.Tree = {
205229
val (messageFormat, args) = deconstructInterpolatedMessage(c)(message)
206230
traceMessageArgs(c)(messageFormat, args: _*)
207231
}
208232

209-
def traceMessageCause(c: LoggerContext)(message: c.Expr[String], cause: c.Expr[Throwable]) = {
233+
def traceMessageCause(c: LoggerContext)(message: c.Expr[String], cause: c.Expr[Throwable]): c.universe.Tree = {
210234
import c.universe._
211235
val underlying = q"${c.prefix}.underlying"
212236
q"if ($underlying.isTraceEnabled) $underlying.trace($message, $cause)"
213237
}
214238

215-
def traceMessageArgs(c: LoggerContext)(message: c.Expr[String], args: c.Expr[Any]*) = {
239+
def traceMessageArgs(c: LoggerContext)(message: c.Expr[String], args: c.Expr[Any]*): c.universe.Tree = {
216240
import c.universe._
217241
val underlying = q"${c.prefix}.underlying"
218242
val anyRefArgs = formatArgs(c)(args: _*)
219243
if (args.length == 2)
220-
q"if ($underlying.isTraceEnabled) $underlying.trace($message, _root_.scala.Array(${anyRefArgs(0)}, ${anyRefArgs(1)}): _*)"
244+
q"if ($underlying.isTraceEnabled) $underlying.trace($message, _root_.scala.Array(${anyRefArgs.head}, ${anyRefArgs(1)}): _*)"
221245
else
222246
q"if ($underlying.isTraceEnabled) $underlying.trace($message, ..$anyRefArgs)"
223247
}
224248

225-
def traceMessageMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String]) = {
249+
def traceMessageMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String]): c.universe.Tree = {
226250
val (messageFormat, args) = deconstructInterpolatedMessage(c)(message)
227251
traceMessageArgsMarker(c)(marker, messageFormat, args: _*)
228252
}
229253

230-
def traceMessageCauseMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]) = {
254+
def traceMessageCauseMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], cause: c.Expr[Throwable]): c.universe.Tree = {
231255
import c.universe._
232256
val underlying = q"${c.prefix}.underlying"
233257
q"if ($underlying.isTraceEnabled) $underlying.trace($marker, $message, $cause)"
234258
}
235259

236-
def traceMessageArgsMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], args: c.Expr[Any]*) = {
260+
def traceMessageArgsMarker(c: LoggerContext)(marker: c.Expr[Marker], message: c.Expr[String], args: c.Expr[Any]*): c.universe.Tree = {
237261
import c.universe._
238262
val underlying = q"${c.prefix}.underlying"
239263
val anyRefArgs = formatArgs(c)(args: _*)
240264
if (args.length == 2)
241-
q"if ($underlying.isTraceEnabled) $underlying.trace($marker, $message, _root_.scala.Array(${anyRefArgs(0)}, ${anyRefArgs(1)}): _*)"
265+
q"if ($underlying.isTraceEnabled) $underlying.trace($marker, $message, _root_.scala.Array(${anyRefArgs.head}, ${anyRefArgs(1)}): _*)"
242266
else
243267
q"if ($underlying.isTraceEnabled) $underlying.trace($marker, $message, ..$anyRefArgs)"
244268
}
245269

246-
/** Checks whether `messsage` is an interpolated string and transforms it into SLF4J string interpolation. */
270+
def traceCode(c: LoggerContext)(body: c.Expr[Unit]): c.universe.Tree = {
271+
import c.universe._
272+
val underlying = q"${c.prefix}.underlying"
273+
q"if ($underlying.isTraceEnabled) $body"
274+
}
275+
276+
/** Checks whether `message` is an interpolated string and transforms it into SLF4J string interpolation. */
247277
private def deconstructInterpolatedMessage(c: LoggerContext)(message: c.Expr[String]) = {
248278
import c.universe._
249279

0 commit comments

Comments
 (0)