2012-05-04 10 views
6

Me gustaría cambiar el color de una salida de mensaje de registro al terminal dependiendo del nivel de registro, tema, etc.,.¿Hay un registrador de color habilitado para Haskell disponible?

El único registrador I found que hace esto en Haskell es parte del paquete xmonad-contrib, pero no quiero tomar una dependencia porque es bastante grande.

Sé que Yesod inicia sesión en color, pero no es obvio para mí cómo hacer que su registrador funcione fuera de una aplicación web Yesod.

Miré en hslogger que parece ser muy similar a System.Log.Logger, pero ninguno parece tener soporte de color fuera de la caja.

hslogger es extensible a través de la costumbre LogHandlers, por lo que posiblemente alguien haya implementado uno con soporte de color?

¿Hay alternativas para el registro en Haskell que he pasado por alto hasta ahora?

EDIT:

Siguiendo el consejo de Don Stewart, que puso en marcha un custom log handler que trabaja con hslogger y ANSI-C con el fin de permitir el registro en el terminal en colores.

+0

Es posible que deba enviar un parche, p. agregando combinadores de color - http://hackage.haskell.org/packages/archive/ansi-wl-pprint/0.6.4/doc/html/Text-PrettyPrint-ANSI-Leijen.html#g:9 –

+1

Gracias, yo ' Voy a intentarlo: implementar un LogHandler habilitado con colores y ponerlo a disposición o posiblemente hacerlo entrar en hslogger. –

Respuesta

5

A partir de mayo de 2012, las bibliotecas de registro disponibles para Haskell son:

Y algunos otros más especializados:

  • greg-client - un cliente para el sistema de registro de Greg distribuido
  • fast-logger - un sistema de registro optimizado para una rápida IO

Ninguna ayuda salida del colorante del terminal del ansi. Hay varias bibliotecas para colorear ansi, por lo que no debería ser demasiado difícil de agregar. P.ej.

0

Si desea ver otro ejemplo de un registrador de color, echar un vistazo a Network.Wai.Middleware.RequestLogger (logStdoutDev) en el paquete WAI-extra. Esto cambia el color por solicitud, pero debe servir como un buen ejemplo.

Cuestiones relacionadas