logging update with context

This commit is contained in:
2025-03-10 16:35:22 -04:00
parent 180e0a96e7
commit 96975c7bd2
12 changed files with 141 additions and 38 deletions

View File

@@ -3,25 +3,24 @@ package main
import (
"database/sql"
"log"
"log/slog"
"net/http"
"os"
"gitea.michaelthomson.dev/mthomson/habits/internal/logging"
"gitea.michaelthomson.dev/mthomson/habits/internal/middleware"
"gitea.michaelthomson.dev/mthomson/habits/internal/migrate"
todohandler "gitea.michaelthomson.dev/mthomson/habits/internal/todo/handler"
todorepository "gitea.michaelthomson.dev/mthomson/habits/internal/todo/repository/postgres"
todoservice "gitea.michaelthomson.dev/mthomson/habits/internal/todo/service"
_ "github.com/jackc/pgx/v5/stdlib"
_ "github.com/mattn/go-sqlite3"
)
func main() {
// create logger
httpLogger := slog.New(slog.NewTextHandler(os.Stdout, nil))
logger := logging.NewLogger()
// create middlewares
loggingMiddleware := middleware.LoggingMiddleware(httpLogger)
contextMiddleware := middleware.ContextMiddleware(logger)
loggingMiddleware := middleware.LoggingMiddleware(logger)
// create db pool
postgresUrl := "postgres://todo:password@localhost:5432/todo"
@@ -35,19 +34,19 @@ func main() {
migrate.Migrate(db)
// create repos
todoRepository := todorepository.NewPostgresTodoRepository(db)
todoRepository := todorepository.NewPostgresTodoRepository(logger, db)
// create services
todoService := todoservice.NewTodoService(todoRepository)
todoService := todoservice.NewTodoService(logger, todoRepository)
// create mux
mux := http.NewServeMux()
// register handlers
mux.Handle("GET /todo/{id}", loggingMiddleware(todohandler.HandleTodoGet(todoService)))
mux.Handle("POST /todo", loggingMiddleware(todohandler.HandleTodoCreate(todoService)))
mux.Handle("DELETE /todo/{id}", loggingMiddleware(todohandler.HandleTodoDelete(todoService)))
mux.Handle("PUT /todo/{id}", loggingMiddleware(todohandler.HandleTodoUpdate(todoService)))
mux.Handle("GET /todo/{id}", contextMiddleware(loggingMiddleware(todohandler.HandleTodoGet(logger, todoService))))
mux.Handle("POST /todo", contextMiddleware(loggingMiddleware(todohandler.HandleTodoCreate(logger, todoService))))
mux.Handle("DELETE /todo/{id}", contextMiddleware(loggingMiddleware(todohandler.HandleTodoDelete(logger, todoService))))
mux.Handle("PUT /todo/{id}", contextMiddleware(loggingMiddleware(todohandler.HandleTodoUpdate(logger, todoService))))
// create server
server := &http.Server{