msft-trns/logger.php
2026-03-02 17:21:57 +00:00

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');
}