Skip to content

QoL Feature: A simple console logger #911

Open
@morgen-peschke

Description

@morgen-peschke

While debugging a script, I felt the lack of a simple console logger.

It was a one-off scala-cli script, and adding a logback.xml file with the appropriate cli arguments seemed like a huge hassle just to get logs dumped to standard error.

I ended up adding this to my script, which did the trick, but was annoying and it seems like this could be provided as part of the library as it does not require any additional dependencies:

class StdOutLogger[F[_]: Apply](console: Console[F]) extends Logger[F] {
  override def error(t: Throwable)(message: => String): F[Unit] =
    console.errorln(message) *> console.println(t)

  override def warn(t: Throwable)(message: => String): F[Unit] =
    console.errorln(message) *> console.println(t)

  override def info(t: Throwable)(message: => String): F[Unit] =
    console.errorln(message) *> console.println(t)

  override def debug(t: Throwable)(message: => String): F[Unit] =
    console.errorln(message) *> console.println(t)

  override def trace(t: Throwable)(message: => String): F[Unit] =
    console.errorln(message) *> console.println(t)

  override def error(message: => String): F[Unit] =
    console.errorln(message)

  override def warn(message: => String): F[Unit] =
    console.errorln(message)

  override def info(message: => String): F[Unit] =
    console.errorln(message)

  override def debug(message: => String): F[Unit] =
    console.errorln(message)

  override def trace(message: => String): F[Unit] =
    console.errorln(message)
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions