Skip to content

Commit d00181c

Browse files
committed
Deprecate implicit use of LoggerFactory
1 parent 4f02ef3 commit d00181c

4 files changed

Lines changed: 26 additions & 14 deletions

File tree

core/shared/src/main/scala/org/typelevel/log4cats/LoggerFactoryGen.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,22 @@ trait LoggerFactoryGen[F[_]] {
2727
}
2828

2929
private[log4cats] trait LoggerFactoryGenCompanion {
30+
@deprecated("LoggerFactories should be passed explicitly, not implicitly", "2.5.0")
3031
def getLogger[F[_]](implicit lf: LoggerFactoryGen[F], name: LoggerName): lf.LoggerType =
3132
lf.getLogger
33+
@deprecated("LoggerFactories should be passed explicitly, not implicitly", "2.5.0")
3234
def getLoggerFromName[F[_]](name: String)(implicit lf: LoggerFactoryGen[F]): lf.LoggerType =
3335
lf.getLoggerFromName(name)
36+
@deprecated("LoggerFactories should be passed explicitly, not implicitly", "2.5.0")
3437
def getLoggerFromClass[F[_]](clazz: Class[_])(implicit lf: LoggerFactoryGen[F]): lf.LoggerType =
3538
lf.getLoggerFromClass(clazz)
39+
@deprecated("LoggerFactories should be passed explicitly, not implicitly", "2.5.0")
3640
def create[F[_]](implicit lf: LoggerFactoryGen[F], name: LoggerName): F[lf.LoggerType] =
3741
lf.create
42+
@deprecated("LoggerFactories should be passed explicitly, not implicitly", "2.5.0")
3843
def fromName[F[_]](name: String)(implicit lf: LoggerFactoryGen[F]): F[lf.LoggerType] =
3944
lf.fromName(name)
45+
@deprecated("LoggerFactories should be passed explicitly, not implicitly", "2.5.0")
4046
def fromClass[F[_]](clazz: Class[_])(implicit lf: LoggerFactoryGen[F]): F[lf.LoggerType] =
4147
lf.fromClass(clazz)
4248
}

slf4j/src/main/scala/org/typelevel/log4cats/slf4j/Slf4jFactory.scala

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.typelevel.log4cats
1818
package slf4j
1919

20+
import cats.effect.kernel.Sync
2021
import org.slf4j.{Logger => JLogger}
2122

2223
trait Slf4jFactory[F[_]] extends LoggerFactory[F] {
@@ -26,8 +27,23 @@ trait Slf4jFactory[F[_]] extends LoggerFactory[F] {
2627
}
2728

2829
object Slf4jFactory extends LoggerFactoryGenCompanion {
30+
@deprecated("LoggerFactories should be passed explicitly, not implicitly", "2.5.0")
2931
def apply[F[_]: Slf4jFactory]: Slf4jFactory[F] = implicitly
3032

33+
def create[F[_]: Sync]: Slf4jFactory[F] = new Slf4jFactory[F] {
34+
override def getLoggerFromName(name: String): SelfAwareStructuredLogger[F] =
35+
Slf4jLogger.getLoggerFromName(name)
36+
37+
override def getLoggerFromSlf4j(logger: JLogger): SelfAwareStructuredLogger[F] =
38+
Slf4jLogger.getLoggerFromSlf4j(logger)
39+
40+
override def fromName(name: String): F[SelfAwareStructuredLogger[F]] =
41+
Slf4jLogger.fromName(name)
42+
43+
override def fromSlf4j(logger: JLogger): F[SelfAwareStructuredLogger[F]] =
44+
Slf4jLogger.fromSlf4j(logger)
45+
}
46+
3147
def getLoggerFromSlf4j[F[_]](logger: JLogger)(implicit
3248
lf: Slf4jFactory[F]
3349
): SelfAwareStructuredLogger[F] = lf.getLoggerFromSlf4j(logger)

slf4j/src/main/scala/org/typelevel/log4cats/slf4j/package.scala

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,10 @@
1717
package org.typelevel.log4cats
1818

1919
import cats.effect.Sync
20-
import org.slf4j.{Logger => JLogger}
2120

2221
package object slf4j {
23-
implicit def loggerFactoryforSync[F[_]: Sync]: Slf4jFactory[F] = new Slf4jFactory[F] {
24-
override def getLoggerFromName(name: String): SelfAwareStructuredLogger[F] =
25-
Slf4jLogger.getLoggerFromName(name)
2622

27-
override def getLoggerFromSlf4j(logger: JLogger): SelfAwareStructuredLogger[F] =
28-
Slf4jLogger.getLoggerFromSlf4j(logger)
29-
30-
override def fromName(name: String): F[SelfAwareStructuredLogger[F]] =
31-
Slf4jLogger.fromName(name)
32-
33-
override def fromSlf4j(logger: JLogger): F[SelfAwareStructuredLogger[F]] =
34-
Slf4jLogger.fromSlf4j(logger)
35-
}
23+
@deprecated("LoggerFactories should be passed explicitly, not implicitly", "2.5.0")
24+
implicit def loggerFactoryforSync[F[_]](implicit F: Sync[F]): Slf4jFactory[F] =
25+
Slf4jFactory.create(F)
3626
}

slf4j/src/test/scala/org/typelevel/log4cats/slf4j/Slf4jLoggerMacroCompilationTests.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class Slf4jLoggerOuterClassMacroTest {
4848

4949
object LoggingBaseline {
5050
val t = new Throwable
51-
def logger[F[_]: Sync]: SelfAwareStructuredLogger[F] = Slf4jFactory.getLogger[F]
51+
def logger[F[_]: Sync]: SelfAwareStructuredLogger[F] = Slf4jFactory.create[F].getLogger
5252

5353
val traceM = logger[IO].trace("")
5454
val traceTM = logger[IO].trace(t)("")

0 commit comments

Comments
 (0)