Files
egutierrez 47fac22230 chore: auto-commit (799 archivos)
- .claude/CLAUDE.md
- .claude/commands/subagentes.md
- .claude/rules/INDEX.md
- .mcp.json
- bash/functions/cybersecurity/analyze_dns.md
- bash/functions/cybersecurity/audit_http_headers.md
- bash/functions/cybersecurity/audit_ssh_config.md
- bash/functions/cybersecurity/check_firewall.md
- bash/functions/cybersecurity/detect_suspicious_users.md
- bash/functions/cybersecurity/encrypt_file.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 00:28:20 +02:00

2.1 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
logger_middleware function go infra 1.0.0 impure func LoggerMiddleware(logger *Logger) Middleware Retorna un Middleware HTTP que emite un log estructurado por cada request. Cada request produce una entrada info con method, path, status y duration_ms. Respeta los campos contextuales del Logger (app, version, request_id...).
logging
log
slog
middleware
http
server
infra
pendiente-usar
log_info_go_infra
Logger_go_infra
Middleware_go_infra
Middleware_go_infra
false error_go_core
net/http
time
name desc
logger Logger estructurado al que emitir cada request. Hereda los campos contextuales (app, version...)
Middleware que loguea cada request HTTP tras su procesamiento true
loguea method, path, status y duration_ms
usa status 200 si el handler no llama WriteHeader
preserva los campos contextuales del logger
functions/infra/logger_test.go functions/infra/logger_middleware.go

Ejemplo

base, _ := LoggerNew(LogLevelInfo, os.Stdout, "json")
appLog := LoggerWith(base, map[string]any{"app": "sqlite_api"})

mux := HTTPRouter(routes)
chain := HTTPMiddlewareChain(LoggerMiddleware(appLog), HTTPCORSMiddleware([]string{"*"}, []string{"GET"}))

http.ListenAndServe(":8484", chain(mux))
// Cada request produce:
// {"time":"...","level":"INFO","msg":"http request","app":"sqlite_api","method":"GET","path":"/health","status":200,"duration_ms":1}

Notas

Funcion impura — captura el status code con un loggerResponseWriter envolvente que intercepta WriteHeader. Si el handler no llama WriteHeader explicitamente el status por defecto es 200. La duracion se mide desde el inicio del middleware hasta despues de que el handler siguiente termine — incluye el tiempo de los middlewares internos pero no los externos en la cadena. El mensaje emitido es "http request" a nivel info para facilitar filtrado via msg:"http request" en queries downstream.