node.js - 为多个应用程序设置中央日志记录包
问题描述
假设我们创建了一个可以重复使用的名为“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 行代码来检索每个应用程序中每个文件的记录器。
我试图找出一种方法来创建一个可以为任何应用程序中的任何文件检索记录器的单个包,并且我正在尝试
将所有内容减少到一个 LoC。
我也试图避免相对路径。
我想不出涉及我们所有应用程序的 1 个日志记录包的解决方案。我唯一能想到的就是每个应用程序都有一个单独的日志记录包(这有点蹩脚),或者在 npm install 时将一些代码从我们的项目符号链接到 node_modules 中,这样我们就可以避免相对路径。
有人知道解决这个问题的好方法吗?
解决方案
好的,我有一个解决方案。我们可以这样做:
import log from 'my-loggers/app1'
import log from 'my-loggers/app2'
import log from 'my-loggers/app3'
这样我们就可以在同一个包中存储不同的记录器。
推荐阅读
- java - 是否在 ExecutorService 中吞下 InterruptedException?
- java - @EnableJpaRepositories 未检测到或 @Autowired of Repository 在 spring-boot 应用程序的任何地方都未检测到
- python - 处理 MongoDB 异常的方法 E11000
- python - 如何将 MLP 的神经网络从 tensorflow 翻译成 pytorch
- angular - Angular Karma - MatDialogRef 没有提供者
- swift - SCNGeometry 不使用数据
- spring - @GetMapping 不会在用户名下显示 CreditCards。@PostMapping 不会为用户创建新卡,它只会更新它
- reactjs - Material UI - 当宽度变为 xs 时如何从容器中删除填充
- c++ - 访问动态创建的向量的元素
- java - 带有强制参数的龙目岛构建器