Deforester es una biblioteca de registro (logging) escrita para el lenguaje Janet que adopta el flujo moderno de producción: el evento parte de una tabla, atraviesa una cadena de procesadores y se transforma en una cadena de texto que finalmente se escribe en un destino configurable. Entre sus características destaca la salida en formato NDJSON cuando se configura json/encode, lo que permite consumir los registros con herramientas como jq; un sistema de niveles que filtra antes de evaluar los argumentos para evitar trabajo innecesario; y un mecanismo de respaldo a stderr para que un fallo en el registro no provoque la caída del programa.
La biblioteca expone enlaces como log, set-logger!, with-log-ctx, with-duration-logged y with-config, junto con utilidades de formato (text-format, file-writer, file-writer-fast) y un procesador key-renamer para adaptar claves. Soporta destinos personalizados mediante closures o descriptores de archivo, e incorpora procesadores componibles como reporter, que reenvía eventos coincidentes a servicios externos (por ejemplo Sentry), o sampler, que conserva únicamente uno de cada n eventos por par nivel/mensaje.
El README incluye además una guía de disciplina para diseñar buenos eventos: preferir eventos anchos con resultados en lugar de acciones paso a paso, registrar decisiones con su motivo, mantener un glosario de claves consistente y separar los hechos en estado del programa de las observaciones en los registros. También compara convenciones de claves entre zerolog, zap, Elastic Common Schema y OpenTelemetry, ayudando al desarrollador a unificar criterios en proyectos Janet personales o de pequeña escala.
