Skip to content

Instantly share code, notes, and snippets.

@TheDIM47
Created March 25, 2022 17:46
Show Gist options
  • Save TheDIM47/24b21cbcf1d1bfdc6e057188b79b3fbe to your computer and use it in GitHub Desktop.
Save TheDIM47/24b21cbcf1d1bfdc6e057188b79b3fbe to your computer and use it in GitHub Desktop.
scala: slf4j logger for doobie
package util
import doobie.LogHandler
import doobie.util.log.{ExecFailure, ProcessingFailure, Success}
import org.slf4j.LoggerFactory
object Slf4jLogger {
val slf4jLogHandler: LogHandler = {
val logger = LoggerFactory.getLogger(getClass.getName)
LogHandler {
case Success(s, a, e1, e2) =>
logger.info(
s"""Success: ${s.linesIterator.dropWhile(_.trim.isEmpty).mkString("\n ")}. Args: [${a.mkString(", ")}]""" +
s""" elapsed = ${e1.toMillis} ms exec + ${e2.toMillis} ms processing (${(e1 + e2).toMillis} ms total)""",
)
case ProcessingFailure(s, a, e1, e2, t) =>
logger.error(
s"""Failed: ${s.linesIterator.dropWhile(_.trim.isEmpty).mkString("\n ")}. Args = [${a.mkString(", ")}]""" +
s""" elapsed = ${e1.toMillis} ms exec + ${e2.toMillis} ms processing (failed) (${(e1 + e2).toMillis} ms total) failure = ${t.getMessage}""",
)
case ExecFailure(s, a, e1, t) =>
logger.error(
s"""Failed: ${s.linesIterator.dropWhile(_.trim.isEmpty).mkString("\n ")}. Args = [${a.mkString(", ")}]""" +
s""" elapsed = ${e1.toMillis} ms exec (failed) failure = ${t.getMessage}""",
)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment