Skip to content

Commit 5fef304

Browse files
committed
Companion trait worked, the implicit did not resolve
1 parent d2c3d64 commit 5fef304

File tree

4 files changed

+30
-24
lines changed

4 files changed

+30
-24
lines changed

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,14 @@ package org.typelevel.log4cats
1818

1919
import scala.annotation.implicitNotFound
2020

21-
@implicitNotFound("""|
22-
|Implicit not found for LoggerFactory[${F}].
23-
|
24-
|Information can be found here: https://log4cats.github.io/logging-capability.html
25-
|""")
21+
@implicitNotFound("""
22+
Implicit not found for LoggerFactory[${F}].
23+
Information can be found here: https://log4cats.github.io/logging-capability.html
24+
""")
2625
trait LoggerFactory[F[_]] extends LoggerFactoryGen[F, SelfAwareStructuredLogger[F]]
27-
object LoggerFactory extends LoggerFactoryCompanion
26+
object LoggerFactory extends LoggerFactoryCompanion {
27+
def apply[F[_]: LoggerFactory]: LoggerFactory[F] = implicitly
28+
}
2829

2930
private[log4cats] trait LoggerFactoryCompanion {
3031
def getLogger[F[_]](implicit

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

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.typelevel.log4cats.slf4j
17+
package org.typelevel.log4cats
18+
package slf4j
1819

19-
import cats.effect.Sync
20-
import org.typelevel.log4cats.{LoggerFactory, LoggerFactoryCompanion, SelfAwareStructuredLogger}
2120
import org.slf4j.{Logger => JLogger}
2221

2322
trait Slf4jFactory[F[_]] extends LoggerFactory[F] {
@@ -29,20 +28,6 @@ trait Slf4jFactory[F[_]] extends LoggerFactory[F] {
2928
object Slf4jFactory extends LoggerFactoryCompanion {
3029
def apply[F[_]: Slf4jFactory]: Slf4jFactory[F] = implicitly
3130

32-
implicit def forSync[F[_]: Sync]: Slf4jFactory[F] = new Slf4jFactory[F] {
33-
override def getLoggerFromName(name: String): SelfAwareStructuredLogger[F] =
34-
Slf4jLogger.getLoggerFromName(name)
35-
36-
override def getLoggerFromSlf4j(logger: JLogger): SelfAwareStructuredLogger[F] =
37-
Slf4jLogger.getLoggerFromSlf4j(logger)
38-
39-
override def fromName(name: String): F[SelfAwareStructuredLogger[F]] =
40-
Slf4jLogger.fromName(name)
41-
42-
override def fromSlf4j(logger: JLogger): F[SelfAwareStructuredLogger[F]] =
43-
Slf4jLogger.fromSlf4j(logger)
44-
}
45-
4631
def getLoggerFromSlf4j[F[_]](logger: JLogger)(implicit
4732
lf: Slf4jFactory[F]
4833
): SelfAwareStructuredLogger[F] = lf.getLoggerFromSlf4j(logger)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.typelevel.log4cats
2+
3+
import cats.effect.Sync
4+
import org.slf4j.{Logger => JLogger}
5+
6+
package object slf4j {
7+
implicit def loggerFactoryforSync[F[_]: Sync]: Slf4jFactory[F] = new Slf4jFactory[F] {
8+
override def getLoggerFromName(name: String): SelfAwareStructuredLogger[F] =
9+
Slf4jLogger.getLoggerFromName(name)
10+
11+
override def getLoggerFromSlf4j(logger: JLogger): SelfAwareStructuredLogger[F] =
12+
Slf4jLogger.getLoggerFromSlf4j(logger)
13+
14+
override def fromName(name: String): F[SelfAwareStructuredLogger[F]] =
15+
Slf4jLogger.fromName(name)
16+
17+
override def fromSlf4j(logger: JLogger): F[SelfAwareStructuredLogger[F]] =
18+
Slf4jLogger.fromSlf4j(logger)
19+
}
20+
}

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] = Slf4jLogger.getLogger[F]
51+
def logger[F[_]: Sync]: SelfAwareStructuredLogger[F] = Slf4jFactory.getLogger[F]
5252

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

0 commit comments

Comments
 (0)