log4cats-mtl


License

License

MIT
GroupId

GroupId

io.chrisdavenport
ArtifactId

ArtifactId

log4cats-mtl_2.12
Last Version

Last Version

0.1.0
Release Date

Release Date

Type

Type

jar
Description

Description

log4cats-mtl
log4cats-mtl
Project URL

Project URL

https://github.com/ChristopherDavenport/log4cats-mtl
Project Organization

Project Organization

io.chrisdavenport
Source Code Management

Source Code Management

https://github.com/ChristopherDavenport/log4cats-mtl

Download log4cats-mtl_2.12

How to add to project

<!-- https://jarcasting.com/artifacts/io.chrisdavenport/log4cats-mtl_2.12/ -->
<dependency>
    <groupId>io.chrisdavenport</groupId>
    <artifactId>log4cats-mtl_2.12</artifactId>
    <version>0.1.0</version>
</dependency>
// https://jarcasting.com/artifacts/io.chrisdavenport/log4cats-mtl_2.12/
implementation 'io.chrisdavenport:log4cats-mtl_2.12:0.1.0'
// https://jarcasting.com/artifacts/io.chrisdavenport/log4cats-mtl_2.12/
implementation ("io.chrisdavenport:log4cats-mtl_2.12:0.1.0")
'io.chrisdavenport:log4cats-mtl_2.12:jar:0.1.0'
<dependency org="io.chrisdavenport" name="log4cats-mtl_2.12" rev="0.1.0">
  <artifact name="log4cats-mtl_2.12" type="jar" />
</dependency>
@Grapes(
@Grab(group='io.chrisdavenport', module='log4cats-mtl_2.12', version='0.1.0')
)
libraryDependencies += "io.chrisdavenport" % "log4cats-mtl_2.12" % "0.1.0"
[io.chrisdavenport/log4cats-mtl_2.12 "0.1.0"]

Dependencies

compile (3)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.12.10
io.chrisdavenport : log4cats-core_2.12 jar 1.0.0
org.typelevel : cats-mtl-core_2.12 jar 0.7.0

Project Modules

There are no modules declared in this project.

log4cats-mtl - Log4cats MTL Integration Layer Build Status Maven Central Code of Consuct

Head on over to the microsite

Quick Start

To use log4cats-mtl in an existing SBT project with Scala 2.12 or a later version, add the following dependencies to your build.sbt depending on your needs:

libraryDependencies ++= Seq(
  "io.chrisdavenport" %% "log4cats-mtl" % "<version>"
)

Examples

import io.chrisdavenport.log4cats.extras.LogMessage
import io.chrisdavenport.log4cats.slf4j.Slf4jLogger
import io.chrisdavenport.log4cats.mtl._
import cats._
import cats.data._
import cats.effect.Sync
import cats.implicits._
import cats.mtl._
import cats.mtl.implicits._

final case class TraceId(value: String)

implicit val traceIdCtxEncoder: CtxEncoder[TraceId] = (traceId: TraceId) => Map("traceId" -> traceId.value)

def doApplicativeLocalThings[F[_]: Sync: ApplicativeLocal[?[_], TraceId]]: F[Unit] = 
  (for {
    logger <- ApplicativeAskLogger.create[F, TraceId](Slf4jLogger.create[F])
    _ <- logger.info("Logging at start of safelyDoThings").scope(TraceId("inner-id"))
    something <- Sync[F].delay(println("I could do anything"))
      .onError{case e => logger.error(e)("Something Went Wrong in safelyDoThings")}
    _ <- logger.info("Logging at end of safelyDoThings")
  } yield something).scope(TraceId("outter-id"))
  
def doFunctorTellThings[F[_]: Sync: FunctorTell[?[_], Chain[LogMessage]]]: F[Unit] = {
  val logger = FunctorTellLogger[F, Chain]()

  for {
    _ <- logger.info("Logging at start of safelyDoThings")
    something <- Sync[F].delay(println("I could do anything"))
      .onError{case e => logger.error(e)("Something Went Wrong in safelyDoThings")}
    _ <- logger.info("Logging at end of safelyDoThings")
  } yield something
}

Versions

Version
0.1.0