首页 > 解决方案 > 为多个应用程序设置中央日志记录包

问题描述

假设我们创建了一个可以重复使用的名为“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. 我也试图避免相对路径。

我想不出涉及我们所有应用程序的 1 个日志记录包的解决方案。我唯一能想到的就是每个应用程序都有一个单独的日志记录包(这有点蹩脚),或者在 npm install 时将一些代码从我们的项目符号链接到 node_modules 中,这样我们就可以避免相对路径。

有人知道解决这个问题的好方法吗?

标签: node.jstypescriptnpm

解决方案


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

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

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


推荐阅读