63 lines
2.4 KiB
PHP
63 lines
2.4 KiB
PHP
<?php
|
|
function logMessage($message, $type = 'INFO') {
|
|
// Enable logging
|
|
$logFile = 'app.log';
|
|
$timestamp = date('Y-m-d H:i:s');
|
|
$logEntry = "[$timestamp] [$type] $message" . PHP_EOL;
|
|
|
|
file_put_contents($logFile, $logEntry, FILE_APPEND);
|
|
|
|
// Create a specific debug log for download issues
|
|
if (strpos($message, 'DIRECT DOWNLOAD') !== false ||
|
|
strpos($message, 'PRIORITY') !== false ||
|
|
strpos($message, 'LAST RESORT') !== false ||
|
|
strpos($message, 'downloadTranslatedFile') !== false) {
|
|
$debugLogFile = 'download_debug.log';
|
|
file_put_contents($debugLogFile, $logEntry, FILE_APPEND);
|
|
}
|
|
|
|
// Also output to console if it's a CLI request
|
|
if (php_sapi_name() === 'cli') {
|
|
echo $logEntry;
|
|
}
|
|
}
|
|
|
|
function logApiCall($url, $method, $headers, $body, $response, $httpCode) {
|
|
// Sanitize headers to remove sensitive information
|
|
$sanitizedHeaders = [];
|
|
foreach ($headers as $header) {
|
|
// Remove API keys from log
|
|
if (strpos($header, 'Subscription-Key') !== false || strpos($header, 'Authorization') !== false) {
|
|
$sanitizedHeaders[] = preg_replace('/(Key|Auth-Key|Authorization):\s*[^\s]+/', '$1: [REDACTED]', $header);
|
|
} else {
|
|
$sanitizedHeaders[] = $header;
|
|
}
|
|
}
|
|
|
|
// For SAS tokens and connection strings in the body
|
|
$sanitizedBody = $body;
|
|
if (is_array($sanitizedBody)) {
|
|
$json = json_encode($sanitizedBody);
|
|
// Remove SAS tokens from logs
|
|
if (strpos($json, 'sv=') !== false && strpos($json, 'sig=') !== false) {
|
|
$json = preg_replace('/(\?|&)(sv|sig|se|sp|st|spr)=[^&]+/', '$1$2=[REDACTED]', $json);
|
|
$sanitizedBody = json_decode($json, true) ?: $sanitizedBody;
|
|
}
|
|
}
|
|
|
|
// Truncate response if it's too large
|
|
$sanitizedResponse = $response;
|
|
if (strlen($response) > 1000) {
|
|
$sanitizedResponse = substr($response, 0, 1000) . '... [truncated]';
|
|
}
|
|
|
|
$logMessage = "API Call:" . PHP_EOL;
|
|
$logMessage .= "URL: $url" . PHP_EOL;
|
|
$logMessage .= "Method: $method" . PHP_EOL;
|
|
$logMessage .= "Headers: " . json_encode($sanitizedHeaders) . PHP_EOL;
|
|
$logMessage .= "Body: " . json_encode($sanitizedBody) . PHP_EOL;
|
|
$logMessage .= "Response Code: $httpCode" . PHP_EOL;
|
|
$logMessage .= "Response: $sanitizedResponse" . PHP_EOL;
|
|
|
|
logMessage($logMessage, 'API');
|
|
}
|