Skip to content

Commit 63297ce

Browse files
committed
logger taking constructor arg macro, for when you have a context, but you don't want to pass it each time via implicit for every call, just set it once when you instantiate the logger.
see lightbend-labs#208
1 parent 338c76a commit 63297ce

File tree

8 files changed

+346
-118
lines changed

8 files changed

+346
-118
lines changed

src/main/scala/com/typesafe/scalalogging/ALogger.scala

+34-34
Original file line numberDiff line numberDiff line change
@@ -4,82 +4,82 @@ import org.slf4j.Marker
44

55
/**
66
*
7-
* abstract class common for both Logger and LoggerTakingConstructorArg,
7+
* trait for wrapping Logger and LoggerTakingConstructorArg,
88
* if you have a library that is sometimes used in a context - in which case you want to log the context,
9-
* but other times is used outside of a context in which case you want to log "normally", your base class can have a logger of this abstract type
10-
*/
9+
* but other times is used outside of a context in which case you want to log "normally", you can wrap them with this, as shown in ALoggerAdapter in tests.
10+
* due to macro compilation limitations, ALoggerAdapter can't be included in this jar.
11+
*/
1112
trait ALogger {
1213

1314
// Error
1415

15-
def error(message: String): Unit = {}
16+
def error(message: String): Unit
1617

17-
def error(message: String, cause: Throwable): Unit = {}
18+
def error(message: String, cause: Throwable): Unit
1819

19-
def error(message: String, args: Any*): Unit = {}
20+
def error(message: String, args: Any*): Unit
2021

21-
def error(marker: Marker, message: String): Unit = {}
22+
def error(marker: Marker, message: String): Unit
2223

23-
def error(marker: Marker, message: String, cause: Throwable): Unit = {}
24+
def error(marker: Marker, message: String, cause: Throwable): Unit
2425

25-
def error(marker: Marker, message: String, args: Any*): Unit = {}
26+
def error(marker: Marker, message: String, args: Any*): Unit
2627

2728
// Warn
2829

29-
def warn(message: String): Unit = {}
30+
def warn(message: String): Unit
3031

31-
def warn(message: String, cause: Throwable): Unit = {}
32+
def warn(message: String, cause: Throwable): Unit
3233

33-
def warn(message: String, args: Any*): Unit = {}
34+
def warn(message: String, args: Any*): Unit
3435

35-
def warn(marker: Marker, message: String): Unit = {}
36+
def warn(marker: Marker, message: String): Unit
3637

37-
def warn(marker: Marker, message: String, cause: Throwable): Unit = {}
38+
def warn(marker: Marker, message: String, cause: Throwable): Unit
3839

39-
def warn(marker: Marker, message: String, args: Any*): Unit = {}
40+
def warn(marker: Marker, message: String, args: Any*): Unit
4041

4142
// Info
4243

43-
def info(message: String): Unit = {}
44+
def info(message: String): Unit
4445

45-
def info(message: String, cause: Throwable): Unit = {}
46+
def info(message: String, cause: Throwable): Unit
4647

47-
def info(message: String, args: Any*): Unit = {}
48+
def info(message: String, args: Any*): Unit
4849

49-
def info(marker: Marker, message: String): Unit = {}
50+
def info(marker: Marker, message: String): Unit
5051

51-
def info(marker: Marker, message: String, cause: Throwable): Unit = {}
52+
def info(marker: Marker, message: String, cause: Throwable): Unit
5253

53-
def info(marker: Marker, message: String, args: Any*): Unit = {}
54+
def info(marker: Marker, message: String, args: Any*): Unit
5455

5556
// Debug
5657

57-
def debug(message: String): Unit = {}
58+
def debug(message: String): Unit
5859

59-
def debug(message: String, cause: Throwable): Unit = {}
60+
def debug(message: String, cause: Throwable): Unit
6061

61-
def debug(message: String, args: Any*): Unit = {}
62+
def debug(message: String, args: Any*): Unit
6263

63-
def debug(marker: Marker, message: String): Unit = {}
64+
def debug(marker: Marker, message: String): Unit
6465

65-
def debug(marker: Marker, message: String, cause: Throwable): Unit = {}
66+
def debug(marker: Marker, message: String, cause: Throwable): Unit
6667

67-
def debug(marker: Marker, message: String, args: Any*): Unit = {}
68+
def debug(marker: Marker, message: String, args: Any*): Unit
6869

6970
// Trace
7071

71-
def trace(message: String): Unit = {}
72+
def trace(message: String): Unit
7273

73-
def trace(message: String, cause: Throwable): Unit = {}
74+
def trace(message: String, cause: Throwable): Unit
7475

75-
def trace(message: String, args: Any*): Unit = {}
76+
def trace(message: String, args: Any*): Unit
7677

77-
def trace(marker: Marker, message: String): Unit = {}
78+
def trace(marker: Marker, message: String): Unit
7879

79-
def trace(marker: Marker, message: String, cause: Throwable): Unit = {}
80+
def trace(marker: Marker, message: String, cause: Throwable): Unit
8081

81-
def trace(marker: Marker, message: String, args: Any*): Unit = {}
82+
def trace(marker: Marker, message: String, args: Any*): Unit
8283

8384
}
8485

85-

src/main/scala/com/typesafe/scalalogging/Logger.scala

+32-33
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ object Logger {
6363
def takingImplicit[A](name: String)(implicit ev: CanLog[A]): LoggerTakingImplicit[A] =
6464
new LoggerTakingImplicit[A](LoggerFactory.getLogger(name))
6565

66-
6766
/**
6867
* Create a [[LoggerTakingConstructorArg]] for the given name.
6968
* Example:
@@ -122,93 +121,93 @@ object Logger {
122121
* val logger = Logger.inContextOf[MyClass, CorrelationId]
123122
* }}}
124123
*/
125-
def inContextOf[T,A](implicit ct: ClassTag[T], ev: CanLog[A], a: A): LoggerTakingConstructorArg[A] =
124+
def inContextOf[T, A](implicit ct: ClassTag[T], ev: CanLog[A], a: A): LoggerTakingConstructorArg[A] =
126125
new LoggerTakingConstructorArg[A](LoggerFactory.getLogger(ct.runtimeClass.getName.stripSuffix("$")), ev, a)
127126
}
128127

129128
/**
130129
* Implementation of a fast logger based on macros and an underlying `org.slf4j.Logger`.
131130
*/
132131
@SerialVersionUID(538248225L)
133-
final class Logger private (val underlying: Underlying) extends ALogger with Serializable {
132+
final class Logger private (val underlying: Underlying) extends Serializable {
134133

135134
// Error
136135

137-
override def error(message: String): Unit = macro LoggerMacro.errorMessage
136+
def error(message: String): Unit = macro LoggerMacro.errorMessage
138137

139-
override def error(message: String, cause: Throwable): Unit = macro LoggerMacro.errorMessageCause
138+
def error(message: String, cause: Throwable): Unit = macro LoggerMacro.errorMessageCause
140139

141-
override def error(message: String, args: Any*): Unit = macro LoggerMacro.errorMessageArgs
140+
def error(message: String, args: Any*): Unit = macro LoggerMacro.errorMessageArgs
142141

143-
override def error(marker: Marker, message: String): Unit = macro LoggerMacro.errorMessageMarker
142+
def error(marker: Marker, message: String): Unit = macro LoggerMacro.errorMessageMarker
144143

145-
override def error(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerMacro.errorMessageCauseMarker
144+
def error(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerMacro.errorMessageCauseMarker
146145

147-
override def error(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.errorMessageArgsMarker
146+
def error(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.errorMessageArgsMarker
148147

149148
def whenErrorEnabled(body: Unit): Unit = macro LoggerMacro.errorCode
150149

151150
// Warn
152151

153-
override def warn(message: String): Unit = macro LoggerMacro.warnMessage
152+
def warn(message: String): Unit = macro LoggerMacro.warnMessage
154153

155-
override def warn(message: String, cause: Throwable): Unit = macro LoggerMacro.warnMessageCause
154+
def warn(message: String, cause: Throwable): Unit = macro LoggerMacro.warnMessageCause
156155

157-
override def warn(message: String, args: Any*): Unit = macro LoggerMacro.warnMessageArgs
156+
def warn(message: String, args: Any*): Unit = macro LoggerMacro.warnMessageArgs
158157

159-
override def warn(marker: Marker, message: String): Unit = macro LoggerMacro.warnMessageMarker
158+
def warn(marker: Marker, message: String): Unit = macro LoggerMacro.warnMessageMarker
160159

161-
override def warn(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerMacro.warnMessageCauseMarker
160+
def warn(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerMacro.warnMessageCauseMarker
162161

163-
override def warn(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.warnMessageArgsMarker
162+
def warn(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.warnMessageArgsMarker
164163

165164
def whenWarnEnabled(body: Unit): Unit = macro LoggerMacro.warnCode
166165

167166
// Info
168167

169-
override def info(message: String): Unit = macro LoggerMacro.infoMessage
168+
def info(message: String): Unit = macro LoggerMacro.infoMessage
170169

171-
override def info(message: String, cause: Throwable): Unit = macro LoggerMacro.infoMessageCause
170+
def info(message: String, cause: Throwable): Unit = macro LoggerMacro.infoMessageCause
172171

173-
override def info(message: String, args: Any*): Unit = macro LoggerMacro.infoMessageArgs
172+
def info(message: String, args: Any*): Unit = macro LoggerMacro.infoMessageArgs
174173

175-
override def info(marker: Marker, message: String): Unit = macro LoggerMacro.infoMessageMarker
174+
def info(marker: Marker, message: String): Unit = macro LoggerMacro.infoMessageMarker
176175

177-
override def info(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerMacro.infoMessageCauseMarker
176+
def info(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerMacro.infoMessageCauseMarker
178177

179-
override def info(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.infoMessageArgsMarker
178+
def info(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.infoMessageArgsMarker
180179

181180
def whenInfoEnabled(body: Unit): Unit = macro LoggerMacro.infoCode
182181

183182
// Debug
184183

185-
override def debug(message: String): Unit = macro LoggerMacro.debugMessage
184+
def debug(message: String): Unit = macro LoggerMacro.debugMessage
186185

187-
override def debug(message: String, cause: Throwable): Unit = macro LoggerMacro.debugMessageCause
186+
def debug(message: String, cause: Throwable): Unit = macro LoggerMacro.debugMessageCause
188187

189-
override def debug(message: String, args: Any*): Unit = macro LoggerMacro.debugMessageArgs
188+
def debug(message: String, args: Any*): Unit = macro LoggerMacro.debugMessageArgs
190189

191-
override def debug(marker: Marker, message: String): Unit = macro LoggerMacro.debugMessageMarker
190+
def debug(marker: Marker, message: String): Unit = macro LoggerMacro.debugMessageMarker
192191

193-
override def debug(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerMacro.debugMessageCauseMarker
192+
def debug(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerMacro.debugMessageCauseMarker
194193

195-
override def debug(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.debugMessageArgsMarker
194+
def debug(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.debugMessageArgsMarker
196195

197196
def whenDebugEnabled(body: Unit): Unit = macro LoggerMacro.debugCode
198197

199198
// Trace
200199

201-
override def trace(message: String): Unit = macro LoggerMacro.traceMessage
200+
def trace(message: String): Unit = macro LoggerMacro.traceMessage
202201

203-
override def trace(message: String, cause: Throwable): Unit = macro LoggerMacro.traceMessageCause
202+
def trace(message: String, cause: Throwable): Unit = macro LoggerMacro.traceMessageCause
204203

205-
override def trace(message: String, args: Any*): Unit = macro LoggerMacro.traceMessageArgs
204+
def trace(message: String, args: Any*): Unit = macro LoggerMacro.traceMessageArgs
206205

207-
override def trace(marker: Marker, message: String): Unit = macro LoggerMacro.traceMessageMarker
206+
def trace(marker: Marker, message: String): Unit = macro LoggerMacro.traceMessageMarker
208207

209-
override def trace(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerMacro.traceMessageCauseMarker
208+
def trace(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerMacro.traceMessageCauseMarker
210209

211-
override def trace(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.traceMessageArgsMarker
210+
def trace(marker: Marker, message: String, args: Any*): Unit = macro LoggerMacro.traceMessageArgsMarker
212211

213212
def whenTraceEnabled(body: Unit): Unit = macro LoggerMacro.traceCode
214213

Original file line numberDiff line numberDiff line change
@@ -1,83 +1,83 @@
11
package com.typesafe.scalalogging
22

3-
import org.slf4j.{Marker, Logger => Underlying}
3+
import org.slf4j.{ Marker, Logger => Underlying }
44

55
import scala.language.experimental.macros
66

77
/**
88
* ALogger that takes some data A and uses it according to strategy CanLog[A] during every log operation.
99
* Useful for logging things in a context, such as a request id, assuming it's available during construction time.
10-
* */
11-
class LoggerTakingConstructorArg[A] private[scalalogging](val underlying: Underlying, val canLogEv: CanLog[A], val a: A) extends ALogger with Serializable with LogsAdditionalData[A] {
10+
*/
11+
class LoggerTakingConstructorArg[A] private[scalalogging] (val underlying: Underlying, val canLogEv: CanLog[A], val a: A) extends Serializable with LogsAdditionalData[A] {
1212

1313
// Error
1414

15-
override def error(message: String): Unit = macro LoggerTakingConstructorArgMacro.errorMessage[A]
15+
def error(message: String): Unit = macro LoggerTakingConstructorArgMacro.errorMessage[A]
1616

17-
override def error(message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.errorMessageCause[A]
17+
def error(message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.errorMessageCause[A]
1818

19-
override def error(message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.errorMessageArgs[A]
19+
def error(message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.errorMessageArgs[A]
2020

21-
override def error(marker: Marker, message: String): Unit = macro LoggerTakingConstructorArgMacro.errorMessageMarker[A]
21+
def error(marker: Marker, message: String): Unit = macro LoggerTakingConstructorArgMacro.errorMessageMarker[A]
2222

23-
override def error(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.errorMessageCauseMarker[A]
23+
def error(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.errorMessageCauseMarker[A]
2424

25-
override def error(marker: Marker, message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.errorMessageArgsMarker[A]
25+
def error(marker: Marker, message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.errorMessageArgsMarker[A]
2626

2727
// Warn
2828

29-
override def warn(message: String): Unit = macro LoggerTakingConstructorArgMacro.warnMessage[A]
29+
def warn(message: String): Unit = macro LoggerTakingConstructorArgMacro.warnMessage[A]
3030

31-
override def warn(message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.warnMessageCause[A]
31+
def warn(message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.warnMessageCause[A]
3232

33-
override def warn(message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.warnMessageArgs[A]
33+
def warn(message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.warnMessageArgs[A]
3434

35-
override def warn(marker: Marker, message: String): Unit = macro LoggerTakingConstructorArgMacro.warnMessageMarker[A]
35+
def warn(marker: Marker, message: String): Unit = macro LoggerTakingConstructorArgMacro.warnMessageMarker[A]
3636

37-
override def warn(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.warnMessageCauseMarker[A]
37+
def warn(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.warnMessageCauseMarker[A]
3838

39-
override def warn(marker: Marker, message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.warnMessageArgsMarker[A]
39+
def warn(marker: Marker, message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.warnMessageArgsMarker[A]
4040

4141
// Info
4242

43-
override def info(message: String): Unit = macro LoggerTakingConstructorArgMacro.infoMessage[A]
43+
def info(message: String): Unit = macro LoggerTakingConstructorArgMacro.infoMessage[A]
4444

45-
override def info(message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.infoMessageCause[A]
45+
def info(message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.infoMessageCause[A]
4646

47-
override def info(message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.infoMessageArgs[A]
47+
def info(message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.infoMessageArgs[A]
4848

49-
override def info(marker: Marker, message: String): Unit = macro LoggerTakingConstructorArgMacro.infoMessageMarker[A]
49+
def info(marker: Marker, message: String): Unit = macro LoggerTakingConstructorArgMacro.infoMessageMarker[A]
5050

51-
override def info(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.infoMessageCauseMarker[A]
51+
def info(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.infoMessageCauseMarker[A]
5252

53-
override def info(marker: Marker, message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.infoMessageArgsMarker[A]
53+
def info(marker: Marker, message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.infoMessageArgsMarker[A]
5454

5555
// Debug
5656

57-
override def debug(message: String): Unit = macro LoggerTakingConstructorArgMacro.debugMessage[A]
57+
def debug(message: String): Unit = macro LoggerTakingConstructorArgMacro.debugMessage[A]
5858

59-
override def debug(message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.debugMessageCause[A]
59+
def debug(message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.debugMessageCause[A]
6060

61-
override def debug(message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.debugMessageArgs[A]
61+
def debug(message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.debugMessageArgs[A]
6262

63-
override def debug(marker: Marker, message: String): Unit = macro LoggerTakingConstructorArgMacro.debugMessageMarker[A]
63+
def debug(marker: Marker, message: String): Unit = macro LoggerTakingConstructorArgMacro.debugMessageMarker[A]
6464

65-
override def debug(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.debugMessageCauseMarker[A]
65+
def debug(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.debugMessageCauseMarker[A]
6666

67-
override def debug(marker: Marker, message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.debugMessageArgsMarker[A]
67+
def debug(marker: Marker, message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.debugMessageArgsMarker[A]
6868

6969
// Trace
7070

71-
override def trace(message: String): Unit = macro LoggerTakingConstructorArgMacro.traceMessage[A]
71+
def trace(message: String): Unit = macro LoggerTakingConstructorArgMacro.traceMessage[A]
7272

73-
override def trace(message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.traceMessageCause[A]
73+
def trace(message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.traceMessageCause[A]
7474

75-
override def trace(message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.traceMessageArgs[A]
75+
def trace(message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.traceMessageArgs[A]
7676

77-
override def trace(marker: Marker, message: String): Unit = macro LoggerTakingConstructorArgMacro.traceMessageMarker[A]
77+
def trace(marker: Marker, message: String): Unit = macro LoggerTakingConstructorArgMacro.traceMessageMarker[A]
7878

79-
override def trace(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.traceMessageCauseMarker[A]
79+
def trace(marker: Marker, message: String, cause: Throwable): Unit = macro LoggerTakingConstructorArgMacro.traceMessageCauseMarker[A]
8080

81-
override def trace(marker: Marker, message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.traceMessageArgsMarker[A]
81+
def trace(marker: Marker, message: String, args: Any*): Unit = macro LoggerTakingConstructorArgMacro.traceMessageArgsMarker[A]
8282

8383
}

0 commit comments

Comments
 (0)