# Logging & Monitoring Audit - 20251123-124345 == Logging Libraries Used == /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:9: "log" /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:176: log.Fatal("Database configuration missing: DB_HOST, DB_USER, DB_PASSWORD, DB_NAME required") /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:186: log.Fatalf("Invalid DB_SCHEMA '%s'. Must be: dev, testing, prod, or empty for public", dbSchema) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:196: log.Fatal(err) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:206: log.Fatal(err) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:213: log.Printf("Connected to database (SSL mode: %s, schema: %s, max_conns: 25)", dbSSLMode, schemaInfo) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:270: log.Fatal("Failed to create tables:", err) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:273: log.Println("Database tables initialized") /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:279: log.Fatal("JWT_SECRET must be set and at least 32 characters") /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:545: log.Println("Database error:", err) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:560: log.Println("Scan error:", err) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:572: log.Println("Rows error:", err) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:681: log.Println("Database error:", err) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:693: log.Printf("AUDIT: User %d created question %d", userID, q.ID) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:737: log.Printf("AUDIT: User %d updated question %d", userID, id) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:774: log.Printf("AUDIT: User %d deleted question %d", userID, id) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:842: log.Printf("AUDIT: User %d answered question %d", userID, questionID) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:886: log.Printf("AUDIT: User %d updated answer %d", userID, id) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:926: log.Printf("AUDIT: User %d deleted answer %d", userID, id) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:972: log.Printf("AUDIT: User %d accepted answer %d for question %d", userID, id, questionID) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:997: log.Printf("AUDIT: Admin %d verified answer %d", userID, id) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1130: log.Printf("AUDIT: Admin %d closed question %d", userID, id) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1257: log.Printf("SECURITY: Read rate limit exceeded for IP %s on %s", clientIP, r.URL.Path) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1263: log.Printf("SECURITY: Write rate limit exceeded for IP %s on %s", clientIP, r.URL.Path) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1288: log.Println("Forum Service shutting down...") /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1295: log.Printf("Could not gracefully shutdown: %v", err) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1300: log.Printf("Forum service starting on port %s\n", port) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1302: log.Fatalf("Server error: %v", err) /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1306: log.Println("Forum Service stopped") /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main.go:12: "log" == Health Check Endpoints == /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1028: // Check if user already voted /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1082: // Check if user already voted /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1235: // Health check /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1236: http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) { /home/administrator/projects/coppertone.tech/backend/functions/forum-service/main.go:1293: server.SetKeepAlivesEnabled(false) /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main_test.go:9:func TestHealthCheck(t *testing.T) { /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main_test.go:10: req, err := http.NewRequest("GET", "/healthz", nil) /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main.go:367: // Health check (public) /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main.go:368: http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main.go:829: http.Error(w, "Invoice number already exists", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main.go:1545: http.Error(w, "Invoice is already paid", http.StatusBadRequest) /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main.go:1809: http.Error(w, "Payment already has a transaction hash", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main.go:2008: http.Error(w, "Token already exists for this network", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main.go:2239: http.Error(w, "Wallet address already exists for this network", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main.go:2495: http.Error(w, "Campaign slug already exists", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main.go:2846: if paypalMode == "live" { /home/administrator/projects/coppertone.tech/backend/functions/payment-service/main.go:2937: http.Error(w, "Invoice is already paid", http.StatusBadRequest) /home/administrator/projects/coppertone.tech/backend/functions/work-management-service/main_test.go:9:func TestHealthCheck(t *testing.T) { /home/administrator/projects/coppertone.tech/backend/functions/work-management-service/main_test.go:10: req, err := http.NewRequest("GET", "/healthz", nil) /home/administrator/projects/coppertone.tech/backend/functions/work-management-service/main.go:177: // Health check (public) /home/administrator/projects/coppertone.tech/backend/functions/work-management-service/main.go:178: http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { /home/administrator/projects/coppertone.tech/backend/functions/work-management-service/main.go:204: server.SetKeepAlivesEnabled(false) /home/administrator/projects/coppertone.tech/backend/functions/work-management-service/main.go:1219: http.Error(w, "Work order number already exists", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/work-management-service/main.go:1269: http.Error(w, "Work order number already exists", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/work-management-service/main.go:1480: http.Error(w, "Cannot cancel a request that has already been processed", http.StatusBadRequest) /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:39: accessTokenExpiry = 15 * time.Minute // Short-lived access tokens /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:372: // Health check /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:373: http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:399: server.SetKeepAlivesEnabled(false) /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:654: http.Error(w, "Email already registered", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:788: http.Error(w, "Blockchain address already registered", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:1114: http.Error(w, "Identity already linked", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:1139: http.Error(w, "Identity already linked", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:1433:// generateAccessToken creates a short-lived JWT access token /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:2039: // Check if user already has this role /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:2047: http.Error(w, fmt.Sprintf("User already has %s role", req.Role), http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:2125: // Check if user already has SUPERUSER role /home/administrator/projects/coppertone.tech/backend/functions/auth-service/main.go:2133: http.Error(w, "User is already a SUPERUSER", http.StatusConflict) /home/administrator/projects/coppertone.tech/backend/functions/example-function/main.go:50: http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) { /home/administrator/projects/coppertone.tech/backend/functions/ipfs-service/main.go:33:// HealthResponse for health check /home/administrator/projects/coppertone.tech/backend/functions/ipfs-service/main.go:34:type HealthResponse struct { /home/administrator/projects/coppertone.tech/backend/functions/ipfs-service/main.go:54: mux.HandleFunc("/health", healthHandler) /home/administrator/projects/coppertone.tech/backend/functions/ipfs-service/main.go:143:func healthHandler(w http.ResponseWriter, r *http.Request) { /home/administrator/projects/coppertone.tech/backend/functions/ipfs-service/main.go:144: response := HealthResponse{ /home/administrator/projects/coppertone.tech/backend/functions/ipfs-service/main.go:145: Status: "healthy", /home/administrator/projects/coppertone.tech/backend/functions/blog-service/main.go:104: StatusApproved = "APPROVED" // Approved by admin, ready to publish /home/administrator/projects/coppertone.tech/backend/functions/blog-service/main.go:300: // Ignore errors for columns that already exist /home/administrator/projects/coppertone.tech/backend/functions/blog-service/main.go:301: if !strings.Contains(err.Error(), "already exists") { /home/administrator/projects/coppertone.tech/backend/functions/blog-service/main.go:819: respondError(w, http.StatusConflict, "Blog with this slug already exists") /home/administrator/projects/coppertone.tech/backend/functions/blog-service/main.go:1315: respondError(w, http.StatusConflict, "A community blog with this slug already exists") /home/administrator/projects/coppertone.tech/backend/functions/blog-service/main.go:1555: respondError(w, http.StatusBadRequest, "This blog is already a site blog") /home/administrator/projects/coppertone.tech/backend/functions/blog-service/main.go:1656: respondError(w, http.StatusBadRequest, "This is not a community blog (SITE blogs are already verified by default)") /home/administrator/projects/coppertone.tech/backend/functions/blog-service/main.go:1661: respondError(w, http.StatusBadRequest, "This community blog is already verified") /home/administrator/projects/coppertone.tech/backend/functions/blog-service/main.go:1942: // Health check /home/administrator/projects/coppertone.tech/backend/functions/blog-service/main.go:1943: http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) { /home/administrator/projects/coppertone.tech/backend/functions/blog-service/main.go:2001: server.SetKeepAlivesEnabled(false) /home/administrator/projects/coppertone.tech/backend/functions/contact-service/main.go:135: mux.HandleFunc("/health", corsMiddleware(healthHandler)) /home/administrator/projects/coppertone.tech/backend/functions/contact-service/main.go:183: server.SetKeepAlivesEnabled(false) /home/administrator/projects/coppertone.tech/backend/functions/contact-service/main.go:405:func healthHandler(w http.ResponseWriter, r *http.Request) { /home/administrator/projects/coppertone.tech/backend/functions/contact-service/main.go:407: json.NewEncoder(w).Encode(map[string]string{"status": "healthy"}) == Metrics Endpoints == /home/administrator/projects/coppertone.tech/frontend/node_modules/.pnpm/chrome-launcher@0.15.2/node_modules/chrome-launcher/.github/workflows/lh-smoke.yml:41: run: yarn --cwd node_modules/lighthouse/ smoke --debug -j=2 --retries=0 --shard=${{ matrix.smoke-test-shard }}/2 dbw oopif offline lantern metrics == Tracing Implementation == /home/administrator/projects/coppertone.tech/.gopath/pkg/mod/golang.org/x/crypto@v0.30.0/internal/testenv/testenv_unix.go:14:// Send SIGQUIT to get a stack trace.