Skip to content

scalalandio/log4effect

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
sbt
 
 
 
 

log4effect

https://travis-ci.org/scalalandio/log4effect Maven Central License

If you missed some syntax for logging with Cats Effect, then here it is.

Getting started

Library is available for Scala 2.11, 2.12, 2.13.

Add it with:

libraryDependencies += "io.scalaland" %% "log4effect" % log4EffectVersion

Usage

Logging is done using Logged type class:

import cats.effect.Sync
import io.scalaland.log4effect.Logged

def operation[F[_]: Sync: Logged] = for {
  a <- Sync[F].defer(1 + 1)
  b <- Sync[F].defer(2 + 2)
  _ <- Logged[F].info(s"a = $a b=$b")
} yield a -> b

If you want you can use interpolator syntax - it assumes that there is cats.Show instance for any value that you use in it.

import cats.implicits._
import io.scalaland.log4effect.Logged
import io.scalaland.log4effect.syntax._

val i = 1
val d = 1.0
val s = "test"

def logs[F[_]: Monad: Logged] = for {
  _ <- trace"$i $d $s"[F]
  _ <- trace"$i $d $s".withEx[F](new Exception("with ex"))
  _ <- debug"$i $d $s"[F]
  _ <- debug"$i $d $s".withEx[F](new Exception("with ex"))
  _ <- info"$i $d $s"[F]
  _ <- info"$i $d $s".withEx[F](new Exception("with ex"))
  _ <- warn"$i $d $s"[F]
  _ <- warn"$i $d $s".withEx[F](new Exception("with ex"))
  _ <- error"$i $d $s"[F]
  _ <- error"$i $d $s".withEx[F](new Exception("with ex"))
} yield ()

If there is no cats.Show you'd have to call .toString explicitly.

About

Cats Effect syntax for logging

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published