Объект Sails недоступен в log.js

Я создаю собственный регистратор, используя Winston in Sails. Я хотел бы установить переменную уровня журнала во всех моих различных конфигурациях среды и указать эту переменную в файле log.js. Кажется, это работает в моих контроллерах со ссылкой на sails.config.variableName, но та же ссылка в log.js выдает: Details:ReferenceError: sails is not defined Может кто-нибудь сказать мне, как ссылаться на эту переменную из конфигурации? Могу ли я добавить какой-нибудь оператор require?

Я бы предпочел нет установить уровень с помощью какого-то переключателя / условия, который ссылается на переменную env, используемую для запуска приложения в log.js (например, process.env.myEnvironment)

Можете ли вы опубликовать пример вашего кода log.js? Если вы еще этого не видели, вот полезный документ Sails о использование пользовательских логгеров и их настройка в парусах.

johnabrams7 26.09.2018 21:52

Да, я использую эти документы. Итак, где вы видите: module.exports.log = { // Pass in our custom logger, and pass all log levels through. custom: customLogger, level: 'silly', // Disable captain's log so it doesn't prefix or stringify our meta data. inspect: false }; Я хочу иметь level: sails.config.logLevel

NightMarcher 26.09.2018 22:02

Нужна помощь, есть репо? Мне это тоже нужно :-)

Craig van Tonder 27.09.2018 16:17

К сожалению, я не могу поделиться репо. Судя по тому, что я нашел до сих пор, я не думаю, что это возможно. Кажется, что все находится в руках парусов, и этот объект не загружается раньше, чем файлы env.

NightMarcher 27.09.2018 16:35

Какую версию Sails вы используете? Вы пробовали эту переменную в своем sails.config.globals? Кроме того, вы можете проверить это в sails.config.log только для конфигурации журнала.

johnabrams7 22.10.2018 20:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
131
1

Ответы 1

Лучший способ справиться с этим, даже если он вам может не понравиться, - передать его как ПЕРЕМЕННУЮ ОКРУЖАЮЩУЮ среду в Sails при запуске вместо использования файлов env / {name} .js. log.js загружается перед полным объектом Sails, и вы не можете ссылаться на него. Рекомендую использовать:

process.env.{your variable name}
ex: process.env.LOG_LEVEL 

Где logLevel передается приложению sails.js при запуске, используя:

>> LOG_LEVEL=info NODE_ENV=dev node app.js

В этом сценарии LOG_LEVEL и NODE_ENV доступны вам в файле log.js.

Но это не столько «переключатель», сколько настройка, зависящая от среды. Экстернализация сущностей, специфичных для среды, на самом деле является обычной практикой и рекомендуется для облачных сред, где вы можете изменять значения без повторного развертывания кода.

При работе в контейнерах вы можете легко изменить уровень журнала с DEBUG на INFO и циклически циклически включать контейнеры без повторного развертывания кода. Затем вы переключаете его обратно таким же образом без простоев.

Другие вопросы по теме