package nova.monadic_sfx.executors import com.typesafe.scalalogging.Logger import monix.execution.Scheduler import monix.execution.UncaughtExceptionReporter import monix.execution.schedulers.TracingScheduler class Schedulers( val blocking: Scheduler = TracingScheduler( Scheduler .io() .withUncaughtExceptionReporter(Schedulers.reporter) ), val async: Scheduler = Scheduler.traced .withUncaughtExceptionReporter(Schedulers.reporter), val fx: Scheduler = TracingScheduler( JFXExecutionContexts.fxScheduler .withUncaughtExceptionReporter(Schedulers.reporter) ) ) object Schedulers { val reporter = UncaughtExceptionReporter { ex => val logger = Logger[Schedulers] logger.error("Uncaught exception", ex) } }