1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-16 22:50:10 +03:00

F #5422: Add FireEdge logger and fix workers (#1373)

This commit is contained in:
Jorge Miguel Lobo Escalona 2021-07-22 18:31:48 +02:00 committed by GitHub
parent d66f4aa523
commit 0bcdd3a2a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 288 additions and 39 deletions

View File

@ -998,6 +998,16 @@
"to-fast-properties": "^2.0.0"
}
},
"@dabh/diagnostics": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
"integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==",
"requires": {
"colorspace": "1.1.x",
"enabled": "2.0.x",
"kuler": "^2.0.0"
}
},
"@discoveryjs/json-ext": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz",
@ -1758,6 +1768,11 @@
"integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
"dev": true
},
"async": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
},
"async-each": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
@ -2496,6 +2511,15 @@
"object-visit": "^1.0.0"
}
},
"color": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
"integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
"requires": {
"color-convert": "^1.9.1",
"color-string": "^1.5.2"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@ -2509,11 +2533,34 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"color-string": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz",
"integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==",
"requires": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
}
},
"colorette": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
"integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w=="
},
"colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
},
"colorspace": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz",
"integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==",
"requires": {
"color": "3.0.x",
"text-hex": "1.0.x"
}
},
"commander": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
@ -3121,6 +3168,11 @@
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
},
"enabled": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
"integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="
},
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
@ -4074,6 +4126,11 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
"fast-safe-stringify": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz",
"integrity": "sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag=="
},
"fastest-levenshtein": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
@ -4087,6 +4144,11 @@
"reusify": "^1.0.4"
}
},
"fecha": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz",
"integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q=="
},
"file-entry-cache": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
@ -4249,6 +4311,11 @@
"integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
"dev": true
},
"fn.name": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
},
"follow-redirects": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz",
@ -5364,6 +5431,11 @@
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
},
"kuler": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
"integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="
},
"levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@ -5492,6 +5564,18 @@
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
"integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
},
"logform": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz",
"integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==",
"requires": {
"colors": "^1.2.1",
"fast-safe-stringify": "^2.0.4",
"fecha": "^4.2.0",
"ms": "^2.1.1",
"triple-beam": "^1.3.0"
}
},
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@ -6197,6 +6281,14 @@
"wrappy": "1"
}
},
"one-time": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
"integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
"requires": {
"fn.name": "1.x.x"
}
},
"onetime": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
@ -7501,6 +7593,21 @@
"simple-concat": "^1.0.0"
}
},
"simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
"integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
"requires": {
"is-arrayish": "^0.3.1"
},
"dependencies": {
"is-arrayish": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
}
}
},
"slash": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
@ -7838,6 +7945,11 @@
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
"integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug=="
},
"stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
},
"stackframe": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz",
@ -8167,6 +8279,11 @@
}
}
},
"text-hex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
"integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
},
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@ -8289,6 +8406,11 @@
"resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
"integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA="
},
"triple-beam": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
"integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
},
"ts-toolbelt": {
"version": "6.15.5",
"resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz",
@ -8833,6 +8955,43 @@
"resolved": "https://registry.npmjs.org/window-or-global/-/window-or-global-1.0.1.tgz",
"integrity": "sha1-2+RboqKRqrxW1iz2bEW3+jIpRt4="
},
"winston": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
"integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==",
"requires": {
"@dabh/diagnostics": "^2.0.2",
"async": "^3.1.0",
"is-stream": "^2.0.0",
"logform": "^2.2.0",
"one-time": "^1.0.0",
"readable-stream": "^3.4.0",
"stack-trace": "0.0.x",
"triple-beam": "^1.3.0",
"winston-transport": "^4.4.0"
},
"dependencies": {
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
}
}
},
"winston-transport": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz",
"integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==",
"requires": {
"readable-stream": "^2.3.7",
"triple-beam": "^1.2.0"
}
},
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",

View File

@ -135,6 +135,7 @@
"webpack-cli": "4.7.2",
"webpack-node-externals": "2.5.2",
"window-or-global": "1.0.1",
"winston": "3.3.3",
"worker-loader": "3.0.8",
"xml2js": "0.4.23",
"xmlrpc": "1.3.2",

View File

@ -17,16 +17,10 @@
import compression from 'compression'
import cors from 'cors'
import express from 'express'
import {
accessSync,
constants,
createWriteStream,
readFileSync
} from 'fs-extra'
import { readFileSync } from 'fs-extra'
import helmet from 'helmet'
import http from 'http'
import https from 'https'
import morgan from 'morgan'
import { resolve } from 'path'
import { env } from 'process'
import webpack from 'webpack'
@ -42,11 +36,11 @@ import { getConfig, messageTerminal } from './utils'
import {
defaultAppName, defaultApps,
defaultEvents, defaultHost,
defaultPort, defaultTypeLog, defaultWebpackMode
defaultPort, defaultWebpackMode
} from './utils/constants/defaults'
import { getLoggerMiddleware, initLogger } from './utils/logger'
import {
genFireedgeKey, genPathResources, getCert,
getKey, validateServerIsSecure
genFireedgeKey, genPathResources, getCert, getKey, validateServerIsSecure
} from './utils/server'
// set paths
@ -55,6 +49,9 @@ genPathResources()
// set fireedge_key
genFireedgeKey()
// set logger
initLogger()
// destructure imports
const unsecureServer = http.createServer
const secureServer = https.createServer
@ -68,7 +65,6 @@ let frontPath = 'client'
const appConfig = getConfig()
const host = appConfig.host || defaultHost
const port = appConfig.port || defaultPort
const userLog = appConfig.log || 'dev'
if (env && env.NODE_ENV && env.NODE_ENV === defaultWebpackMode) {
try {
@ -101,31 +97,16 @@ if (env && env.NODE_ENV && env.NODE_ENV === defaultWebpackMode) {
}
frontPath = '../client'
}
let log = morgan('dev')
if (userLog === defaultTypeLog && global && global.paths && global.paths.FIREEDGE_LOG) {
try {
accessSync(global.paths.FIREEDGE_LOG, constants.W_OK)
const logStream = createWriteStream(global.paths.FIREEDGE_LOG, {
flags: 'a'
})
log = morgan('combined', { stream: logStream })
} catch (err) {
const config = {
color: 'red',
message: 'Error: %s',
error: err.message || ''
}
messageTerminal(config)
}
}
app.use(helmet.hidePoweredBy())
app.use(compression())
app.use(`${basename}/client`, express.static(resolve(__dirname, frontPath)))
app.use(`${basename}/client/*`, express.static(resolve(__dirname, frontPath)))
// log request
app.use(log)
const loggerMiddleware = getLoggerMiddleware()
if (loggerMiddleware) {
app.use(loggerMiddleware)
}
// cors
if (appConfig.cors) {
app.use(cors())
@ -136,7 +117,7 @@ app.use(express.json())
app.use(`${basename}/api`, entrypointApi) // opennebula Api routes
const frontApps = Object.keys(defaultApps)
frontApps.map(frontApp => {
frontApps.forEach(frontApp => {
app.get(`${basename}/${frontApp}`, entrypointApp)
app.get(`${basename}/${frontApp}/*`, entrypointApp)
})

View File

@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and *
* limitations under the License. *
* ------------------------------------------------------------------------- */
/* eslint-disable indent */
const { env } = require('process')
const express = require('express')
@ -33,6 +34,8 @@ const {
fillResourceforHookConnection
} = require('../../utils')
const { writeInLogger } = require('../../utils/logger')
const {
validateResourceAndSession,
setOptionalParameters,
@ -189,13 +192,14 @@ router.all(
}
const worker = new Worker(resolve(...workerPath, 'index.worker.js'))
worker.onmessage = function (result) {
worker.terminate()
const err = result && result.data && result.data.err
const value = result && result.data && result.data.value
if (!err) {
fillResourceforHookConnection(user, command, paramsCommand)
}
writeInLogger(`command: ${command} response for worker: ${JSON.stringify(value)}`)
responseOpennebula(updaterResponse, err, value, response, next)
worker.terminate()
}
worker.postMessage(
{

View File

@ -19,7 +19,7 @@ const { Router } = require('express')
const { env } = require('process')
const { renderToString } = require('react-dom/server')
const root = require('window-or-global')
const path = require('path')
const { resolve } = require('path')
const { createStore, compose, applyMiddleware } = require('redux')
const thunk = require('redux-thunk').default
const { ServerStyleSheets } = require('@material-ui/core/styles')
@ -72,7 +72,7 @@ router.get('*', (req, res) => {
const composeEnhancer = (root && root.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose
// loadable
const statsFile = path.resolve(__dirname, 'client', app + defaultFileStats)
const statsFile = resolve(__dirname, 'client', app + defaultFileStats)
const extractor = new ChunkExtractor({ statsFile })
// SSR redux store

View File

@ -0,0 +1,92 @@
/* ------------------------------------------------------------------------- *
* Copyright 2002-2021, OpenNebula Project, OpenNebula Systems *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); you may *
* not use this file except in compliance with the License. You may obtain *
* a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
* ------------------------------------------------------------------------- */
const { env } = require('process')
const { global } = require('window-or-global')
const winston = require('winston')
const morgan = require('morgan')
const { defaultWebpackMode } = require('./constants/defaults')
let logger = null
/**
* Initialize logger.
*/
const initLogger = () => {
if (global && global.paths && global.paths.FIREEDGE_LOG) {
logger = winston.createLogger({
transports: [
new winston.transports.File({
level: 'info',
filename: global.paths.FIREEDGE_LOG,
handleExceptions: true,
json: true,
maxsize: 5242880, // 5MB
maxFiles: 5,
colorize: false
})
],
exitOnError: false
})
logger.stream = {
write: function (message, encoding) {
logger.info(message)
}
}
if (env && env.NODE_ENV && env.NODE_ENV === defaultWebpackMode) {
logger.add(new winston.transports.Console({
format: winston.format.simple()
}))
}
}
}
/**
* Get logger.
*
* @returns {object} - logger
*/
const getLogger = () => logger
/**
* Get Logger middleware.
*
* @returns {object} - morgan middleware
*/
const getLoggerMiddleware = () => {
const logger = getLogger()
if (logger) {
return morgan('combined', { stream: logger.stream })
}
}
/**
* Write in logger.
*
* @param {string} message - message for logger file
*/
const writeInLogger = (message = '') => {
const logger = getLogger()
if (logger) {
logger.log({
level: 'info',
message
})
}
}
module.exports = { initLogger, getLogger, getLoggerMiddleware, writeInLogger }

View File

@ -24,6 +24,7 @@ const { existsSync, readFileSync, createWriteStream, readdirSync, statSync } = r
const { internalServerError } = require('./constants/http-codes')
const { messageTerminal } = require('server/utils/general')
const { validateAuth } = require('server/utils/jwt')
const { writeInLogger } = require('server/utils/logger')
const {
from: fromData,
defaultAppName,
@ -251,6 +252,7 @@ const encrypt = (data = '', key = '', iv = '') => {
rtn = encryptData
} catch (err) {
const errorData = (err && err.message) || ''
writeInLogger(errorData)
messageTerminal({
color: 'red',
message: 'Error: %s',
@ -279,6 +281,7 @@ const decrypt = (data = '', key = '', iv = '') => {
rtn = decryptData
} catch (err) {
const errorData = (err && err.message) || ''
writeInLogger(errorData)
messageTerminal({
color: 'red',
message: 'Error: %s',
@ -309,6 +312,7 @@ const existsFile = (path = '', success = defaultEmptyFunction, error = defaultEm
}
} catch (err) {
errorData = (err && err.message) || ''
writeInLogger(errorData)
messageTerminal({
color: 'red',
message: 'Error: %s',
@ -364,10 +368,12 @@ const genFireedgeKey = () => {
() => {
createFile(
global.paths.FIREEDGE_KEY_PATH, uuidv4.replace(/-/g, ''), () => undefined, err => {
const errorData = (err && err.message) || ''
writeInLogger(errorData)
messageTerminal({
color: 'red',
message: 'Error: %s',
error: (err && err.message) || ''
error: errorData
})
})
}
@ -413,11 +419,13 @@ const getSunstoneAuth = () => {
}
}
}, err => {
const errorData = err.message || ''
const config = {
color: 'red',
message: 'Error: %s',
error: err.message || ''
error: errorData
}
writeInLogger(errorData)
messageTerminal(config)
})
}
@ -554,7 +562,9 @@ const getFiles = (path = '', recursive = false, files = []) => {
}
})
} catch (error) {
messageTerminal(defaultError(error && error.message))
const errorData = (error && error.message) || ''
writeInLogger(errorData)
messageTerminal(defaultError(errorData))
}
}
return files
@ -586,6 +596,7 @@ const getFilesbyEXT = (dir = '', ext = '', errorCallback = defaultEmptyFunction)
})
} catch (error) {
const errorMsg = (error && error.message) || ''
writeInLogger(errorMsg)
messageTerminal(defaultError(errorMsg))
errorCallback(errorMsg)
}
@ -613,6 +624,7 @@ const getDirectories = (dir = '', errorCallback = () => undefined) => {
})
} catch (error) {
const errorMsg = (error && error.message) || ''
writeInLogger(errorMsg)
messageTerminal(defaultError(errorMsg))
errorCallback(errorMsg)
}