Я создаю собственный регистратор, используя Winston in Sails. Я хотел бы установить переменную уровня журнала во всех моих различных конфигурациях среды и указать эту переменную в файле log.js. Кажется, это работает в моих контроллерах со ссылкой на sails.config.variableName, но та же ссылка в log.js выдает: Details:ReferenceError: sails is not defined Может кто-нибудь сказать мне, как ссылаться на эту переменную из конфигурации? Могу ли я добавить какой-нибудь оператор require?
Я бы предпочел нет установить уровень с помощью какого-то переключателя / условия, который ссылается на переменную env, используемую для запуска приложения в log.js (например, process.env.myEnvironment)
Да, я использую эти документы. Итак, где вы видите: 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
Нужна помощь, есть репо? Мне это тоже нужно :-)
К сожалению, я не могу поделиться репо. Судя по тому, что я нашел до сих пор, я не думаю, что это возможно. Кажется, что все находится в руках парусов, и этот объект не загружается раньше, чем файлы env.
Какую версию Sails вы используете? Вы пробовали эту переменную в своем sails.config.globals? Кроме того, вы можете проверить это в sails.config.log только для конфигурации журнала.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Лучший способ справиться с этим, даже если он вам может не понравиться, - передать его как ПЕРЕМЕННУЮ ОКРУЖАЮЩУЮ среду в 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 и циклически циклически включать контейнеры без повторного развертывания кода. Затем вы переключаете его обратно таким же образом без простоев.
Можете ли вы опубликовать пример вашего кода log.js? Если вы еще этого не видели, вот полезный документ Sails о использование пользовательских логгеров и их настройка в парусах.