info('User logged in successfully', ['user_id' => 123]); $logger->warning('Failed login attempt', ['username' => 'testuser', 'ip' => '192.168.1.1']); $logger->error('Database connection failed', ['host' => 'localhost', 'database' => 'easystream']); // Example 2: Security event logging log_security_event('Suspicious file upload attempt', [ 'filename' => 'malicious.php', 'mime_type' => 'application/x-php', 'user_id' => $_SESSION['USER_ID'] ?? null ]); // Example 3: Performance monitoring $startTime = microtime(true); // Simulate some processing sleep(1); $executionTime = microtime(true) - $startTime; if ($executionTime > 0.5) { // Log if takes more than 500ms log_performance_issue('Slow database query', $executionTime, [ 'query_type' => 'user_search', 'parameters' => ['search_term' => 'example'] ]); } // Example 4: Validation error logging function validateUserInput($data) { $errors = []; if (empty($data['username'])) { log_validation_error('username', $data['username'] ?? '', 'required'); $errors[] = 'Username is required'; } if (!filter_var($data['email'] ?? '', FILTER_VALIDATE_EMAIL)) { log_validation_error('email', $data['email'] ?? '', 'valid_email'); $errors[] = 'Valid email is required'; } return $errors; } // Example 5: Database operation with error logging function updateUserProfile($userId, $data) { global $class_database; try { $result = $class_database->doUpdate('db_accountuser', 'usr_id', $data, $userId); if ($result) { $logger = VLogger::getInstance(); $logger->info('User profile updated', [ 'user_id' => $userId, 'updated_fields' => array_keys($data) ]); return true; } else { log_app_error('Failed to update user profile', [ 'user_id' => $userId, 'data' => $data ]); return false; } } catch (Exception $e) { log_app_error('Exception during profile update: ' . $e->getMessage(), [ 'user_id' => $userId, 'exception' => get_class($e), 'trace' => $e->getTraceAsString() ]); return false; } } // Example 6: Authentication logging function authenticateUser($username, $password) { global $class_database; // Rate limiting check $clientIP = $_SERVER['REMOTE_ADDR']; if (!check_rate_limit('login_' . $clientIP, 5, 300)) { log_auth_error('Rate limit exceeded for login attempts', $username, [ 'ip' => $clientIP, 'rate_limit_exceeded' => true ]); return false; } // Validate credentials (simplified example) $user = $class_database->singleFieldValue('db_accountuser', 'usr_id', 'usr_user', $username); if (!$user) { log_auth_error('Login attempt with non-existent username', $username); return false; } // Password verification would go here $passwordValid = true; // Simplified if (!$passwordValid) { log_auth_error('Login attempt with invalid password', $username, [ 'user_id' => $user ]); return false; } // Successful login $logger = VLogger::getInstance(); $logger->info('User logged in successfully', [ 'user_id' => $user, 'username' => $username ]); return $user; } // Example 7: File upload logging function handleFileUpload($file) { $allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; $maxSize = 5 * 1024 * 1024; // 5MB $validation = validate_file_upload($file, $allowedTypes, $maxSize); if (!$validation['valid']) { log_security_event('Invalid file upload attempt', [ 'filename' => $file['name'], 'size' => $file['size'], 'type' => $file['type'], 'error' => $validation['error'] ]); return false; } // Process upload $uploadDir = 'f_data/data_userfiles/uploads/'; $filename = uniqid() . '_' . basename($file['name']); $uploadPath = $uploadDir . $filename; if (move_uploaded_file($file['tmp_name'], $uploadPath)) { $logger = VLogger::getInstance(); $logger->info('File uploaded successfully', [ 'original_filename' => $file['name'], 'stored_filename' => $filename, 'size' => $file['size'], 'mime_type' => $validation['mime_type'] ]); return $filename; } else { log_app_error('Failed to move uploaded file', [ 'filename' => $file['name'], 'destination' => $uploadPath ]); return false; } } // Example 8: API request logging function logAPIRequest($endpoint, $method, $params, $response, $executionTime) { $logger = VLogger::getInstance(); $logLevel = VLogger::INFO; $context = [ 'api_endpoint' => $endpoint, 'method' => $method, 'parameters' => $params, 'response_size' => strlen(json_encode($response)), 'execution_time' => $executionTime ]; // Log as warning if slow if ($executionTime > 2.0) { $logLevel = VLogger::WARNING; $context['slow_request'] = true; } $logger->log($logLevel, "API request to {$endpoint}", $context); } // Example usage if ($_SERVER['REQUEST_METHOD'] === 'POST') { $startTime = microtime(true); // Simulate API processing $response = ['status' => 'success', 'data' => []]; $executionTime = microtime(true) - $startTime; logAPIRequest('/api/users', 'POST', $_POST, $response, $executionTime); } echo "Enhanced logging examples completed. Check the logs in f_data/logs/"; ?>