You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.2 KiB

  1. package nova.monadic_sfx
  2. import scala.concurrent.duration._
  3. import _root_.monix.bio.Task
  4. import cats.implicits._
  5. import io.odin._
  6. import io.odin.config._
  7. import io.odin.syntax._
  8. import nova.monadic_sfx.actors.ActorModule
  9. import nova.monadic_sfx.http.HttpModule
  10. import nova.monadic_sfx.ui.UiModule
  11. import nova.monadic_sfx.util.reactive.Middlewares
  12. trait MainModule extends ActorModule with UiModule with HttpModule {
  13. def routerLogger(defaultLogger: Logger[Task], storeLogger: Logger[Task]) =
  14. enclosureRouting[Task](
  15. "nova.monadic_sfx.util.reactive.Middlewares" -> storeLogger,
  16. "nova.monadic_sfx.util.reactive.Store" -> storeLogger
  17. )
  18. .withFallback(defaultLogger)
  19. .withAsync()
  20. def makeLogger =
  21. for {
  22. defaultLogger <- consoleLogger[Task]()
  23. .withAsync(timeWindow = 1.millis) |+| fileLogger[Task](
  24. "application.log"
  25. ).withAsync()
  26. middlewareLogger <-
  27. consoleLogger[
  28. Task
  29. ](formatter = Middlewares.format)
  30. .withMinimalLevel(Level.Trace)
  31. .withAsync() |+| fileLogger[Task](
  32. "stores.log",
  33. formatter = Middlewares.format
  34. ).withAsync()
  35. routerLogger <- routerLogger(defaultLogger, middlewareLogger)
  36. } yield (routerLogger)
  37. }