diff --git a/packages/core/strapi/lib/commands/transfer/export.js b/packages/core/strapi/lib/commands/transfer/export.js index 8f3d70cd8f..9bdf88773d 100644 --- a/packages/core/strapi/lib/commands/transfer/export.js +++ b/packages/core/strapi/lib/commands/transfer/export.js @@ -17,7 +17,7 @@ const { buildTransferTable, DEFAULT_IGNORED_CONTENT_TYPES, createStrapiInstance, - formatDiagnosticErrors, + formatDiagnostic, } = require('./utils'); /** @@ -78,7 +78,7 @@ module.exports = async (opts) => { }, }); - engine.diagnostics.onDiagnostic(formatDiagnosticErrors); + engine.diagnostics.onDiagnostic(formatDiagnostic); const progress = engine.progress.stream; diff --git a/packages/core/strapi/lib/commands/transfer/import.js b/packages/core/strapi/lib/commands/transfer/import.js index 74605a710f..f1d05078df 100644 --- a/packages/core/strapi/lib/commands/transfer/import.js +++ b/packages/core/strapi/lib/commands/transfer/import.js @@ -16,11 +16,7 @@ const { isObject } = require('lodash/fp'); const path = require('path'); const strapi = require('../../index'); -const { - buildTransferTable, - DEFAULT_IGNORED_CONTENT_TYPES, - formatDiagnosticErrors, -} = require('./utils'); +const { buildTransferTable, DEFAULT_IGNORED_CONTENT_TYPES, formatDiagnostic } = require('./utils'); /** * @typedef {import('@strapi/data-transfer').ILocalFileSourceProviderOptions} ILocalFileSourceProviderOptions @@ -88,7 +84,7 @@ module.exports = async (opts) => { const engine = createTransferEngine(source, destination, engineOptions); - engine.diagnostics.onDiagnostic(formatDiagnosticErrors); + engine.diagnostics.onDiagnostic(formatDiagnostic); const progress = engine.progress.stream; const getTelemetryPayload = () => { diff --git a/packages/core/strapi/lib/commands/transfer/transfer.js b/packages/core/strapi/lib/commands/transfer/transfer.js index 4c0743f8d4..c8a4b530d3 100644 --- a/packages/core/strapi/lib/commands/transfer/transfer.js +++ b/packages/core/strapi/lib/commands/transfer/transfer.js @@ -15,8 +15,8 @@ const { buildTransferTable, createStrapiInstance, DEFAULT_IGNORED_CONTENT_TYPES, + formatDiagnostic, } = require('./utils'); -const formatDiagnosticErrors = require('./utils'); const logger = console; @@ -110,7 +110,7 @@ module.exports = async (opts) => { }, }); - engine.diagnostics.onDiagnostic(formatDiagnosticErrors); + engine.diagnostics.onDiagnostic(formatDiagnostic); try { logger.log(`Starting transfer...`); diff --git a/packages/core/strapi/lib/commands/transfer/utils.js b/packages/core/strapi/lib/commands/transfer/utils.js index 083d371953..c89016012b 100644 --- a/packages/core/strapi/lib/commands/transfer/utils.js +++ b/packages/core/strapi/lib/commands/transfer/utils.js @@ -4,10 +4,11 @@ const chalk = require('chalk'); const Table = require('cli-table3'); const { Option } = require('commander'); const { TransferGroupPresets } = require('@strapi/data-transfer/lib/engine'); + const { - config: { createOutputFileConfiguration }, + configs: { createOutputFileConfiguration }, createLogger, -} = require('@strapi/logger'); +} = require('@strapi/logger/lib'); const { readableBytes, exitWith } = require('../utils/helpers'); const strapi = require('../../index'); const { getParseListWithChoices } = require('../utils/commander'); @@ -179,5 +180,5 @@ module.exports = { excludeOption, onlyOption, validateExcludeOnly, - formatDiagnosticErrors: formatDiagnostic, + formatDiagnostic, }; diff --git a/packages/utils/logger/lib/config/output-file-configuration.js b/packages/utils/logger/lib/config/output-file-configuration.js deleted file mode 100644 index 87f34ea026..0000000000 --- a/packages/utils/logger/lib/config/output-file-configuration.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -const { transports, format } = require('winston'); -const { LEVEL_LABEL, LEVELS } = require('../constants'); -const { prettyPrint } = require('../formats'); - -/** - * This will remove the chalk color codes from the message provided. - * It's used to log plain text in the log file - */ -const getPlainText = format.printf(({ message }) => { - return message.replace( - // eslint-disable-next-line no-control-regex - /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, - '' - ); -}); - -const createOutputFileConfiguration = (filename) => { - return { - level: LEVEL_LABEL, - levels: LEVELS, - format: prettyPrint(), - transports: [ - new transports.Console(), - new transports.File({ level: 'error', filename, format: getPlainText }), - ], - }; -}; - -module.exports = createOutputFileConfiguration; diff --git a/packages/utils/logger/lib/config/default-configuration.js b/packages/utils/logger/lib/configs/default-configuration.js similarity index 100% rename from packages/utils/logger/lib/config/default-configuration.js rename to packages/utils/logger/lib/configs/default-configuration.js diff --git a/packages/utils/logger/lib/configs/index.js b/packages/utils/logger/lib/configs/index.js new file mode 100644 index 0000000000..5490935f05 --- /dev/null +++ b/packages/utils/logger/lib/configs/index.js @@ -0,0 +1,9 @@ +'use strict'; + +const createDefaultConfiguration = require('./default-configuration'); +const createOutputFileConfiguration = require('./output-file-configuration'); + +module.exports = { + createDefaultConfiguration, + createOutputFileConfiguration, +}; diff --git a/packages/utils/logger/lib/configs/output-file-configuration.js b/packages/utils/logger/lib/configs/output-file-configuration.js new file mode 100644 index 0000000000..20139c6e2e --- /dev/null +++ b/packages/utils/logger/lib/configs/output-file-configuration.js @@ -0,0 +1,20 @@ +'use strict'; + +const { transports } = require('winston'); +const { LEVEL_LABEL, LEVELS } = require('../constants'); +const { prettyPrint } = require('../formats'); +const excludeColors = require('../formats/exclude-colors'); + +const createOutputFileConfiguration = (filename) => { + return { + level: LEVEL_LABEL, + levels: LEVELS, + format: prettyPrint(), + transports: [ + new transports.Console(), + new transports.File({ level: 'error', filename, format: excludeColors }), + ], + }; +}; + +module.exports = createOutputFileConfiguration; diff --git a/packages/utils/logger/lib/formats/exclude-colors.js b/packages/utils/logger/lib/formats/exclude-colors.js new file mode 100644 index 0000000000..70ba41ae48 --- /dev/null +++ b/packages/utils/logger/lib/formats/exclude-colors.js @@ -0,0 +1,17 @@ +'use strict'; + +const { format } = require('winston'); + +/** + * This will remove the chalk color codes from the message provided. + * It's used to log plain text in the log file + */ +const excludeColors = format.printf(({ message }) => { + return message.replace( + // eslint-disable-next-line no-control-regex + /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, + '' + ); +}); + +module.exports = excludeColors; diff --git a/packages/utils/logger/lib/index.js b/packages/utils/logger/lib/index.js index 1077dbeb14..f7de8d88bf 100644 --- a/packages/utils/logger/lib/index.js +++ b/packages/utils/logger/lib/index.js @@ -3,11 +3,10 @@ const winston = require('winston'); const formats = require('./formats'); -const createDefaultConfiguration = require('./config/default-configuration'); -const createOutputFileConfiguration = require('./config/output-file-configuration'); +const configs = require('./configs'); const createLogger = (userConfiguration = {}) => { - const configuration = createDefaultConfiguration(); + const configuration = configs.createDefaultConfiguration(); Object.assign(configuration, userConfiguration); @@ -18,5 +17,5 @@ module.exports = { createLogger, winston, formats, - config: { createDefaultConfiguration, createOutputFileConfiguration }, + configs, };