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.

38 lines
1.2 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  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.util.reactive.store.Middlewares
  9. object Loggers {
  10. def routerLogger(defaultLogger: Logger[Task], storeLogger: Logger[Task]) =
  11. enclosureRouting[Task](
  12. "nova.monadic_sfx.util.reactive.store.Middlewares" -> storeLogger,
  13. "nova.monadic_sfx.util.reactive.store.Store" -> storeLogger
  14. )
  15. .withFallback(defaultLogger)
  16. .withAsync(timeWindow = 10.millis)
  17. def makeLogger =
  18. for {
  19. defaultLogger <- consoleLogger[Task]()
  20. .withAsync(timeWindow = 10.millis) |+| fileLogger[Task](
  21. "application.log"
  22. ).withAsync(timeWindow = 10.millis)
  23. middlewareLogger <-
  24. consoleLogger[
  25. Task
  26. ](formatter = Middlewares.format)
  27. .withMinimalLevel(Level.Trace)
  28. .withAsync(timeWindow = 10.millis) |+| fileLogger[Task](
  29. "stores.log",
  30. formatter = Middlewares.format
  31. ).withAsync(timeWindow = 10.millis)
  32. routerLogger <- routerLogger(defaultLogger, middlewareLogger)
  33. } yield routerLogger
  34. }