Team Ai
Apppublic

sanket3280/code-execution

sourceHugging Faceupdated 11mo agoView on Hugging Face
0likes
executionLogger.unified.js133 linesDownload Raw Back to utils
1/**2 * Unified Execution Logger3 * Tracks execution metrics and logs for debugging4 */5 6const fs = require('fs').promises;7const path = require('path');8 9class UnifiedExecutionLogger {10  constructor() {11    this.logDir = path.join(__dirname, '../logs/execution');12    this.ensureLogDir();13  }14 15  async ensureLogDir() {16    try {17      await fs.mkdir(this.logDir, { recursive: true });18    } catch (error) {19      console.error('Failed to create log directory:', error);20    }21  }22 23  /**24   * Log execution start25   */26  logExecutionStart(executionId, options) {27    const { language, testCaseCount, strategy } = options;28    console.log(`\n๐Ÿš€ Execution Started [${executionId}]`);29    console.log(`   Strategy:    ${strategy}`);30    console.log(`   Language:    ${language}`);31    console.log(`   Test Cases:  ${testCaseCount}`);32    console.log(`   Timestamp:   ${new Date().toISOString()}`);33  }34 35  /**36   * Log execution completion37   */38  logExecutionComplete(executionId, result) {39    const { summary, executionTime, strategy } = result;40    const icon = summary.passed === summary.total ? 'โœ…' : 'โš ๏ธ';41    42    console.log(`${icon} Execution Complete [${executionId}]`);43    console.log(`   Strategy:    ${strategy}`);44    console.log(`   Results:     ${summary.passed}/${summary.total} passed`);45    console.log(`   Time:        ${executionTime}ms`);46    console.log(`   Timestamp:   ${new Date().toISOString()}\n`);47  }48 49  /**50   * Log execution error51   */52  logExecutionError(executionId, error, strategy) {53    console.error(`โŒ Execution Failed [${executionId}]`);54    console.error(`   Strategy:    ${strategy}`);55    console.error(`   Error:       ${error.message}`);56    console.error(`   Timestamp:   ${new Date().toISOString()}\n`);57  }58 59  /**60   * Log strategy fallback61   */62  logStrategyFallback(executionId, fromStrategy, toStrategy, reason) {63    console.warn(`๐Ÿ”„ Strategy Fallback [${executionId}]`);64    console.warn(`   From:        ${fromStrategy}`);65    console.warn(`   To:          ${toStrategy}`);66    console.warn(`   Reason:      ${reason}`);67    console.warn(`   Timestamp:   ${new Date().toISOString()}\n`);68  }69 70  /**71   * Log test case result72   */73  logTestCaseResult(executionId, caseId, result) {74    const icon = result.pass ? 'โœ“' : 'โœ—';75    const status = result.status || (result.pass ? 'AC' : 'WA');76    console.log(`   ${icon} Case ${caseId}: ${status} (${result.timeMs || 0}ms)`);77  }78 79  /**80   * Write detailed log to file81   */82  async writeDetailedLog(executionId, data) {83    try {84      const logFile = path.join(this.logDir, `${executionId}.json`);85      const logData = {86        executionId,87        timestamp: new Date().toISOString(),88        ...data89      };90      91      await fs.writeFile(logFile, JSON.stringify(logData, null, 2));92    } catch (error) {93      console.error('Failed to write detailed log:', error);94    }95  }96 97  /**98   * Log performance metrics99   */100  logPerformanceMetrics(executionId, metrics) {101    console.log(`\n๐Ÿ“Š Performance Metrics [${executionId}]`);102    console.log(`   Avg Time:        ${metrics.avgTimeMs}ms`);103    console.log(`   Max Time:        ${metrics.maxTimeMs}ms`);104    console.log(`   Avg Memory:      ${metrics.avgMemoryKB}KB`);105    console.log(`   Max Memory:      ${metrics.maxMemoryKB}KB`);106    console.log(`   Time Complexity: ${metrics.timeComplexity}`);107    console.log(`   Space Complexity: ${metrics.spaceComplexity}\n`);108  }109 110  /**111   * Log Docker execution112   */113  logDockerExecution(executionId, options) {114    console.log(`๐Ÿณ Docker Execution [${executionId}]`);115    console.log(`   Image:       ${options.dockerImage}`);116    console.log(`   Memory:      ${options.memoryLimit}MB`);117    console.log(`   CPU:         ${options.cpuLimit} cores`);118    console.log(`   Timeout:     ${options.timeout}ms`);119  }120 121  /**122   * Log HackerEarth API call123   */124  logHackerEarthExecution(executionId, options) {125    console.log(`๐ŸŒ HackerEarth API [${executionId}]`);126    console.log(`   Language:    ${options.language}`);127    console.log(`   Test Cases:  ${options.testCaseCount}`);128    console.log(`   Timeout:     ${options.timeout}ms`);129  }130}131 132module.exports = new UnifiedExecutionLogger();133