Browse Source

typescriptize

Yuki Takei 4 years ago
parent
commit
ebb86a72e6

+ 3 - 2
packages/app/src/utils/logger/alias-for-debug.ts

@@ -1,3 +1,4 @@
+import generateBunyanLogger from './index';
 /**
  * return 'debug' method of bunyan logger
  *
@@ -5,7 +6,7 @@
  *
  * @param {string} name
  */
-module.exports = (name) => {
-  const bunyanLogger = require('./index')(name);
+module.exports = (name: string) => {
+  const bunyanLogger = generateBunyanLogger(name);
   return bunyanLogger.debug.bind(bunyanLogger);
 };

+ 12 - 63
packages/app/src/utils/logger/index.ts

@@ -1,68 +1,17 @@
-const bunyan = require('bunyan'); // will be replaced to browser-bunyan on browser by webpack
-const minimatch = require('minimatch');
+import Logger from 'bunyan';
+import { createLogger } from 'universal-bunyan';
 
-const isBrowser = typeof window !== 'undefined';
-const isProd = process.env.NODE_ENV === 'production';
+import configForDev from '^/config/logger/config.dev';
+import configForProd from '^/config/logger/config.prod';
 
-const config = require('@root/config').logger;
-const stream = isProd ? require('./stream.prod') : require('./stream.dev');
+const isProduction = process.env.NODE_ENV === 'production';
+const config = isProduction ? configForProd : configForDev;
 
-// logger store
-const 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
- * @param {string} name Logger name
- */
-function determineLoggerLevel(name) {
-  if (isBrowser && isProd) {
-    return 'error';
-  }
-
-  let level = config.default;
-
-  /* eslint-disable array-callback-return, no-useless-return */
-  // retrieve configured level
-  Object.keys(config).some((key) => { //  breakable forEach
-    // test whether 'name' matches to 'key'(blob)
-    if (minimatch(name, key)) {
-      level = config[key];
-      return; //                          break if match
-    }
+const loggerFactory = function(name: string): Logger {
+  return createLogger({
+    name,
+    config,
   });
-
-  return level;
-}
-
-module.exports = (name) => {
-  // create logger instance if absent
-  if (loggers[name] == null) {
-    loggers[name] = bunyan.createLogger({
-      name,
-      stream,
-      level: determineLoggerLevel(name),
-    });
-  }
-
-  return loggers[name];
 };
+
+export default loggerFactory;