如何为多个应用搭建可复用的中央日志包并实现调用?
如何为多个应用搭建中央日志包
我来分享一个简单高效的方案,通过创建名为my-loggers的可复用npm包,就能让多个应用共享统一的日志工具,具体步骤如下:
1. 创建可复用日志包 my-loggers
首先我们搭建这个核心的日志包,它基于bunyan实现,并且通过单例模式避免重复创建logger实例:
import bunyan = require('bunyan'); const loggers = {}; export const getLogger = function(name, config){ // 如果已存在对应名称的logger,直接返回 if(loggers[name]){ return loggers[name]; } // 不存在则创建并缓存 return loggers[name] = bunyan.createLogger(config); };
这个实现的好处是,同一个应用中多次调用getLogger获取同名实例时,只会初始化一次,避免资源浪费,同时也能保证日志配置的一致性。
2. 在业务应用中使用 my-loggers
完成包的开发后(记得先把它发布到你的私有npm仓库或者通过本地link调试),就可以在各个业务应用中使用了:
安装依赖
在应用根目录执行安装命令:
npm install -S my-loggers
调用日志工具
在应用代码中引入并使用:
import * as MyLoggers from 'my-loggers'; import config = require('../my-app-config'); // 根据业务模块名称获取logger实例,传入对应配置 const log = MyLoggers.getLogger('user-service', config.logger); // 之后就可以正常使用日志方法了 log.info('用户服务启动成功'); log.error('用户登录失败', { error: err });
这样一来,所有应用都能使用统一的日志工具,后续如果需要调整日志逻辑(比如更换日志库、添加统一的日志格式),只需要修改my-loggers这一个包,所有依赖的应用更新包版本就能同步生效,非常便于维护。
内容的提问来源于stack exchange,提问作者user7898461
相关产品推荐
相关产品推荐

