io.odin.loggers

Type members

Classlikes

case class AsyncLogger[F[_]](queue: Queue[F, LoggerMessage], timeWindow: FiniteDuration, inner: Logger[F])(`evidence$1`: Clock[F], F: MonadThrow[F]) extends DefaultLogger[F]

AsyncLogger spawns non-cancellable cats.effect.Fiber with actual log action encapsulated there.

AsyncLogger spawns non-cancellable cats.effect.Fiber with actual log action encapsulated there.

Use AsyncLogger.withAsync to instantiate it safely

Companion
object
object AsyncLogger
Companion
class
case class ConsoleLogger[F[_]](formatter: Formatter, out: PrintStream, err: PrintStream, minLevel: Level)(F: Sync[F]) extends DefaultLogger[F]
Companion
object
Companion
class
case class ConstContextLogger[F[_]](ctx: Map[String, String], inner: Logger[F])(`evidence$1`: Clock[F], `evidence$2`: Monad[F]) extends DefaultLogger[F]
Companion
object
Companion
class
case class ContextualLogger[F[_]](inner: Logger[F])(`evidence$1`: Clock[F], `evidence$2`: Monad[F], withContext: WithContext[F]) extends DefaultLogger[F]

Logger that extracts context from environment of F[_] with the help of WithContext type class.

Logger that extracts context from environment of F[_] with the help of WithContext type class.

One of the examples of F[_] that has a context is Reader (also known as Kleisli) that is abstraction over function A => M[B]. If there is a way to extract context Map[String, String] from the A (see HasContext), then it's possible to add this context to the log.

Companion
object
Companion
class
case class ContramapLogger[F[_]](f: LoggerMessage => LoggerMessage, inner: Logger[F])(`evidence$1`: Clock[F], `evidence$2`: Monad[F]) extends DefaultLogger[F]

Apply given function to each LoggerMessage before passing it to the next logger

Apply given function to each LoggerMessage before passing it to the next logger

abstract class DefaultLogger[F[_]](val minLevel: Level)(clock: Clock[F], F: Monad[F]) extends Logger[F]

Default logger that relies on implicits of Clock[F] and Monad[F] to get timestamp and create log message with this timestamp

Default logger that relies on implicits of Clock[F] and Monad[F] to get timestamp and create log message with this timestamp

case class FileLogger[F[_]](buffer: BufferedWriter, formatter: Formatter, minLevel: Level)(F: Sync[F]) extends DefaultLogger[F]

Write to given log writer with provided formatter

Write to given log writer with provided formatter

Companion
object
object FileLogger
Companion
class
case class FilterLogger[F[_]](fn: LoggerMessage => Boolean, inner: Logger[F])(`evidence$1`: Clock[F], F: Monad[F]) extends DefaultLogger[F]

Filter each LoggerMessage using given predicate before passing it to the next logger

Filter each LoggerMessage using given predicate before passing it to the next logger

trait HasContext[Env]

Extract log context from environment

Extract log context from environment

object SecretLogger
trait WithContext[F[_]]

Resolve context stored in F[_] effect

Resolve context stored in F[_] effect

Companion
object
object WithContext
Companion
class
class WriterTLogger[F[_]](val minLevel: Level)(`evidence$1`: Clock[F], `evidence$2`: Monad[F]) extends DefaultLogger[[_] =>> WriterT[F, List[LoggerMessage], _$2]]

Pure logger that stores logs in WriterT log

Pure logger that stores logs in WriterT log