November 24, 2023

Вывод логов, если позволяют текущие настройки скрипта

Ранее было описано как запускать скрипт с различными вариантами настроек файла конфигурации скрипта из файлов JSON.

Теперь мы будем выводить логи, только в том случае если есть соответствующие настройки в конфиге.

const fs = require('fs');

// Функция для чтения файла конфигурации

// Определение функции для чтения файла конфигурации
function readConfigFile() {
  try {
    // Чтение данных из файла 'route_config.json' в формате UTF-8
    const data = fs.readFileSync('route_config.json', 'utf8');

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

    // Проверка режима выполнения наличием аргумента командной строки '-c',
	// если аргумент присутствует, то используется следующий аргумент (process.argv[3]),
	// в противном случае устанавливается режим 'production'.
    const mode = process.argv[2] === '-c' ? process.argv[3] : 'production';

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

    // Чтение данных из файла конфигурации в формате UTF-8
    return JSON.parse(fs.readFileSync(configFile, 'utf8'));
  } catch (err) {
    // Обработка ошибок при чтении или разборе файла конфигурации
    console.error(`Произошла ошибка при чтении файла конфигурации:`, err);
    
    // Возврат значения null в случае ошибки
    return null;
  }
}


// Функция для вывода лога в консоль
// Определение функции для логирования сообщения
function logMessage(message) {
  // Получение данных из файла конфигурации
  const configData = readConfigFile();

  // Проверка наличия данных о логгере в конфигурации
  //Проверка наличия данных о логгере в объекте configData.
  //Проверяется наличие объекта configData и наличие свойства logger в этом объекте.
  if (configData && configData.logger) {
    // Если логгер указан в конфигурации, выводим сообщение в консоль с префиксом [LOG]
    console.log(`[LOG] ${message}`);
  }
}

// Вызов функции для вывода лога в консоль в конце скрипта
logMessage("Тестовый лог в конце скрипта");

Результат работы скрипта:

D:\node\mode>node app.js
[LOG] Тестовый лог в конце скрипта

D:\node\mode>node app.js -c debug

D:\node\mode>