Logcore es una pequeña librería de logging en Go que ofrece:
- Salida en texto o JSON.
- Niveles de log: DEBUG, INFO, WARN, ERROR, FATAL.
- Soporte para campos adicionales (Field), capas (layer) y caller.
- Salida hacia múltiples writers (stdout, buffers, archivos, etc).
- Formateo con colores cuando se ejecuta en un terminal.
Módulo en desarrollo. Pruebas unitarias disponibles en logger/logger_test.go.
Clona el repositorio y usa go build / go test según necesites.
Importa el paquete y crea un logger:
package main
import (
"bytes"
"fmt"
"logcore/logger"
)
func main() {
// Crear logger con JSON habilitado y nivel INFO
l := logger.NewLogger(
logger.WithLevel(logger.InfoLevel),
logger.WithJSON(true),
)
// Añadir una salida extra (por ejemplo un buffer)
var buf bytes.Buffer
l.AddOutput(&buf)
// Logear un mensaje con campos
l.Info("Aplicación iniciada", logger.Field{Key: "version", Value: "v0.1.0"})
fmt.Println(buf.String())
}Funciones útiles:
- Creación:
logger.NewLogger,logger.NewDebugLogger. - Opciones:
logger.WithJSON,logger.WithPrettyJSON,logger.WithLevel,logger.WithLayer,logger.WithField,logger.WithCaller. - Tipo de campo:
logger.Field.
También existe un envoltorio simple de uso global en logs.go (funciones LogSuccess, LogInfo, LogWarning, LogError).
El formateo de JSON y texto se realiza en el paquete interno de utilidades:
El formateador aplica colores si la salida es un TTY y serializa campos adicionales en el log.
- Logging en texto (por defecto):
- usa
logger.NewLogger()sinWithJSON(true).
- usa
- Logging en JSON:
- usa
logger.NewLogger(logger.WithJSON(true)).
- usa
- Añadir caller:
logger.WithCaller(true). - Añadir capa (layer):
logger.WithLayer("Repository").
Ejecuta las pruebas con:
go test ./...Las pruebas del logger están en logger/logger_test.go.
- Crea una rama feature/fix.
- Envía PR con tests que cubran cambios.
- Respeta estilo y mutexes actuales para concurrencia en
logger.
Sin licencia especificada (añade un archivo LICENSE si quieres compartirlo públicamente).