November 26, 2023

Colored console log

раскрашиваем лог консоли

const fs = require('fs');


// Функция для чтения файла конфигурации
function readConfigFile() {
  try {
    const configPath = 'config';

    // Путь к файлу 'route_config.json'
    const routeConfigPath = `${configPath}/route_config.json`;

    // Проверка существования файла 'route_config.json'
    if (!fs.existsSync(routeConfigPath)) {
      console.error(`Файл ${routeConfigPath} не существует`);
      return null;
    }

    // Чтение данных из файла 'route_config.json' в формате UTF-8
    const data = fs.readFileSync(routeConfigPath, 'utf8');

    // Преобразование данных из JSON формата в объект
    const config = JSON.parse(data);

    // Проверка режима выполнения наличием аргумента командной строки '-c',
    // если аргумент присутствует, то используется следующий аргумент (process.argv[3]),
    // в противном случае устанавливается режим 'production'.
    const mode = process.argv[2] === '-c' ? process.argv[3] : 'production';
 
 if (!config[mode]) {
      console.error(`Значение для режима ${mode} не определено в конфигурации`);
      return null;
    }

    // Получение пути к файлу конфигурации для указанного режима
    const configFile = config[mode];

    // Путь к файлу конфигурации
    const configFilePath = `${configPath}/${configFile}`;

    // Чтение данных из файла конфигурации в формате UTF-8

    // Проверка существования файла конфигурации
   
	if (!fs.existsSync(configFilePath)) {
      console.error(`Файл ${configFilePath} не существует`);
      return null;
    }
	
  
return JSON.parse(fs.readFileSync(configFilePath, 'utf8'));

  } catch (err) {
    // Обработка ошибок при чтении или разборе файла конфигурации
    console.error(`Произошла ошибка при чтении файла конфигурации:`, err);
    return null;
  }
}

function coloredText(text) {
  const replacements = {
    red: '\x1b[31m',
    green: '\x1b[32m',
    blue: '\x1b[34m',
    reset: '\x1b[0m',
  };

  let result = text.replace(/{{(.*?):(.*?)}}/g, (match, color, content) => {
    const replacement = replacements[color] || '';
    return replacement + content + replacements.reset;
  });

  return result;
}

function logConsole(message, errorPage) {
  const configData = readConfigFile();
  if (configData && configData.logger) {
    const colorMessage = coloredText(message);
    const colorError = coloredText(errorPage);
    const logText = colorMessage + ' ' + colorError;

    console.log(logText);
  }
}
const code="500";
// Вызов функции для вывода лога в консоль в конце скрипта
logConsole("Ошибка {{red:чтения}} файла конфигурации", `{{green:${code}}}`);