为多个应用程序设置中央日志记录包

时间:2018-04-26 01:21:15

标签: node.js typescript npm

假设我们创建了一个名为' my-loggers'可以重复使用,看起来像这样:

import bunyan = require('bunyan');
const loggers = {};

export const getLogger = function(name, config){

   if(loggers[name]){
     return loggers[name];
   }

  return loggers[name] = bunyan.createLogger(config);

};

然后在每个应用程序中,我们执行:

npm install -S my-loggers

然后我们使用这样的记录器:

import * as MyLoggers from 'my-loggers';
import config = require('../my-app-config');
const log = MyLoggers.getLogger('my-app', config.logging);

问题是它确实需要3行代码来检索每个应用程序中每个文件的记录器。

我正在试图找出一种方法来创建一个可以为任何应用程序中的任何文件检索记录器的包,我正在尝试

  1. 将所有内容减少到只有一个LoC。

  2. 我也在努力避免相对路径。

  3. 我想不出一个涉及我们所有应用程序的1个日志包的解决方案。我唯一能想到的是每个应用程序一个单独的日志包(这有点蹩脚),或者做一个技巧,我们将项目中的一些代码符号链接到node_modules,在npm安装时,这允许我们避免相对路径。 / p>

    任何人都知道解决这个问题的好方法吗?

1 个答案:

答案 0 :(得分:0)

好的,我有一个解决方案。我们可以这样做:

import log from 'my-loggers/app1'
import log from 'my-loggers/app2'
import log from 'my-loggers/app3'

这样我们就可以在同一个包中存储不同的记录器。