feat(ssr): вынести обработку SSR ошибок в отдельный файл
- Создан resources/js/ssr/errorHandler.js для логирования SSR ошибок - SSR ошибки теперь записываются в storage/logs/ssr-errors.log - Обновлён ssr.js с использованием кастомного error handler - Добавлен storage/logs в .gitignore Теперь SSR ошибки не засоряют основные логи приложения Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* SSR Error Handler
|
||||
* Captures and logs SSR-specific errors to a separate log file
|
||||
*/
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
const SSR_LOG_FILE = path.join(process.cwd(), 'storage', 'logs', 'ssr-errors.log');
|
||||
|
||||
/**
|
||||
* Format error for logging
|
||||
*/
|
||||
function formatError(error) {
|
||||
const timestamp = new Date().toISOString();
|
||||
const errorDetails = {
|
||||
timestamp,
|
||||
message: error.message || 'Unknown error',
|
||||
stack: error.stack || 'No stack trace',
|
||||
type: error.constructor.name,
|
||||
};
|
||||
|
||||
return JSON.stringify(errorDetails) + '\n';
|
||||
}
|
||||
|
||||
/**
|
||||
* Log error to separate SSR error file
|
||||
*/
|
||||
export function logSsrError(error) {
|
||||
try {
|
||||
// Ensure directory exists
|
||||
const logDir = path.dirname(SSR_LOG_FILE);
|
||||
if (!fs.existsSync(logDir)) {
|
||||
fs.mkdirSync(logDir, { recursive: true });
|
||||
}
|
||||
|
||||
// Append error to log file
|
||||
fs.appendFileSync(SSR_LOG_FILE, formatError(error), 'utf8');
|
||||
} catch (logError) {
|
||||
// Fallback to console if file write fails
|
||||
console.error('Failed to write SSR error log:', logError);
|
||||
console.error('Original SSR error:', error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create SSR error handler middleware
|
||||
* Usage: Wrap your SSR render function with this
|
||||
*/
|
||||
export function createSsrErrorHandler() {
|
||||
return (error) => {
|
||||
logSsrError(error);
|
||||
|
||||
// Return true to suppress error propagation
|
||||
// Return false to also throw the error
|
||||
return true;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user