Files
agent-evals/backend/internal/logging/logger.go
Evan Reichard a80de1730c feat: implement WYSIWYG markdown editor
Add complete markdown editor with Go backend and React/TypeScript frontend.

Backend:
- Cobra CLI with configurable host, port, data-dir, static-dir flags
- REST API for CRUD operations on markdown files (GET, POST, PUT, DELETE)
- File storage with flat .md structure
- Comprehensive Logrus logging for all operations
- Static asset serving for frontend

Frontend:
- React 18 + TypeScript + Tailwind CSS
- Live markdown editor with GFM preview (react-markdown)
- File management UI (list, create, open, save, delete)
- Theme system (Light/Dark/System) with localStorage persistence
- Responsive design (320px - 1920px+)

Testing:
- 6 backend tests covering CRUD round-trip, validation, error handling
- 19 frontend tests covering API, theme system, and UI components
- All tests passing with single 'make test' command

Build:
- Frontend compiles to optimized assets in dist/
- Backend can serve frontend via --static-dir flag
2026-02-06 08:53:52 -05:00

38 lines
757 B
Go

package logging
import (
"net/http"
"time"
"github.com/sirupsen/logrus"
)
var Logger *logrus.Logger
// Init initializes the logger
func Init() {
Logger = logrus.New()
Logger.SetFormatter(&logrus.JSONFormatter{})
Logger.SetLevel(logrus.InfoLevel)
}
// RequestMiddleware logs HTTP requests
func RequestMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
Logger.WithFields(logrus.Fields{
"method": r.Method,
"path": r.URL.Path,
}).Info("Request started")
next.ServeHTTP(w, r)
Logger.WithFields(logrus.Fields{
"method": r.Method,
"path": r.URL.Path,
"duration": time.Since(start).String(),
}).Info("Request completed")
})
}