'use strict' /** * Copyright (c) 2018, OBCon Inc. * All rights reserved. */ /** * @file * @copyright OBCon Inc. Korea 2018 * @author gye hyun james kim [pnuskgh@gmail.com] */ class OBConObject { constructor() { } //--- For Common loggerError(err) { //--- for Mozilla if ((err.fileName) && (err.lineNumber) && (err.columnNumber)) { logger.error(`Error: ${err.fileName} file ${err.lineNumber} line ${err.columnNumber} column`); } else { let tmpStackArray = new Error().stack.split('\n'); if (2 < tmpStackArray.length) { let tmpStr = tmpStackArray[2]; if ((-1 < tmpStr.indexOf('(')) && (-1 < tmpStr.indexOf(')'))) { tmpStr = tmpStr.substring(tmpStr.indexOf('(') + 1, tmpStr.indexOf(')')); let tmpArray = tmpStr.split(':'); if (tmpArray.length == 3) { let fileName = tmpArray[0]; let lineNumber = tmpArray[1]; let columnNumber = tmpArray[2]; fileName = fileName.replace(/\\/g, '/'); logger.error(`Error: ${fileName} file ${lineNumber} line ${columnNumber} column`); } else if (tmpArray.length == 4) { let fileName = tmpArray[0] + ':' + tmpArray[1]; let lineNumber = tmpArray[2]; let columnNumber = tmpArray[3]; fileName = fileName.replace(/\\/g, '/'); logger.error(`Error: ${fileName} file ${lineNumber} line ${columnNumber} column`); } } } } //--- for 일반적인 오류 처리 // if (err instanceof Error) { if ((err.name) && (err.message)) { logger.error(`${err.name}: ${err.message}`); } if (err.stack) { logger.error(err.stack); } // } //--- for Microsoft if (err.number) { logger.error(`Number: ${err.number}`); } if (err.description) { logger.error(`Description: ${err.description}`); } //--- for others if ((err.toSource) && (typeof err.toSource === 'function')) { logger.log(`toSource(): ${err.toSource()}`); } if ((err.toString) && (typeof err.toString === 'function')) { logger.log(`toString(): ${err.toString()}`); } logger.error('Error stringfy : ' + JSON.stringify(err)); if (err.code) { logger.error('Code : ' + err.code); } if (err.original) { logger.error('Original : ' + JSON.stringify(err['original'])); } if (err.errors) { if (typeof(err.errors) == 'array') { err.errors.forEach(function(error) { logger.error('Error array'); if (error.type) { logger.error(' Type: ' + error.type); } if (error.message) { logger.error(' Message: ' + error.message); } if (error.path) { logger.error(' Path: ' + error.path); } if (error.value) { logger.error(' Value: ' + error.value); } }); } else { logger.error('Errors : ' + JSON.stringify(err.errors)); } } } //--- For View resJson(res, code, message, data, err) { res.writeHead(200, { "Content-Type": "application/json;characterset=utf-8" }); res.write(JSON.stringify({ code: code, message: message, data: data, error: err })); res.end(); } getErrorMessage(err) { let message = 'error'; if (typeof(err.errors) == 'array') { if (0 < err.errors.length) { message = err.errors[0].message; } } else { logger.error(JSON.stringify(err.errors)); } return message; } } module.exports = OBConObject;