Просмотр исходного кода

ensure to inject logger configurations from environment variables

Yuki Takei 7 лет назад
Родитель
Сommit
f629e3ca41
1 измененных файлов с 21 добавлено и 2 удалено
  1. 21 2
      lib/service/logger/index.js

+ 21 - 2
lib/service/logger/index.js

@@ -4,13 +4,32 @@ const minimatch = require('minimatch');
 const isBrowser = typeof window !== 'undefined';
 const isBrowser = typeof window !== 'undefined';
 const isProd = process.env.NODE_ENV === 'production';
 const isProd = process.env.NODE_ENV === 'production';
 
 
-const config = require('@root/config').logger;
-
+let config = require('@root/config').logger;
 let stream = isProd ? require('./stream.prod') : require('./stream.dev');
 let stream = isProd ? require('./stream.prod') : require('./stream.dev');
 
 
 // logger store
 // logger store
 let loggers = {};
 let loggers = {};
 
 
+
+// merge configuration from environment variables
+const envLevelMap = {
+  INFO:   'info',
+  DEBUG:  'debug',
+  WARN:   'warn',
+  TRACE:  'trace',
+  ERROR:  'error',
+};
+Object.keys(envLevelMap).forEach(envName => {   // ['INFO', 'DEBUG', ...].forEach
+  const envVars = process.env[envName];         // process.env.DEBUG should have a value like 'growi:routes:page,growi:models.page,...'
+  if (envVars != null) {
+    const level = envLevelMap[envName];
+    envVars.split(',').forEach(ns => {          // ['growi:routes:page', 'growi:models.page', ...].forEach
+      config[ns.trim()] = level;
+    });
+  }
+});
+
+
 /**
 /**
  * determine logger level
  * determine logger level
  * @param {string} name Logger name
  * @param {string} name Logger name