evmtools-node
Version:
このライブラリは、プライムブレインズ社で利用している「進捗管理ツール(Excel)」ファイルを読み込み、 プロジェクトの進捗状況や要員別の作業量を可視化するためのライブラリです。
55 lines • 2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setLoggerConfig = setLoggerConfig;
exports.getLogger = getLogger;
const pino_1 = __importDefault(require("pino"));
const config_1 = __importDefault(require("config"));
// const isProd = process.env.NODE_ENV === 'production';
// モジュールごとのロガーをキャッシュ
const loggers = {};
// デフォルトの設定(このlibrary標準の動き)
const defaultLoggerOptions = {
level: 'warn',
moduleLogLevels: {},
transport: undefined,
};
const isBrowser = typeof window !== 'undefined';
// 外から設定を上書きできるようにしておく
let loggerConfig = {
...defaultLoggerOptions,
...(isBrowser
? {} // ブラウザでは config 無効
: config_1.default.has('evmtools-node-logger')
? config_1.default.get('evmtools-node-logger')
: {}),
};
function setLoggerConfig(config) {
loggerConfig = {
...defaultLoggerOptions,
...config,
};
// 必要なら既存ログレベルをリセットして再構築する処理も入れられる
for (const key of Object.keys(loggers)) {
delete loggers[key];
}
}
/**
* モジュール名を指定して Logger を取得。
* 初回アクセス時に生成し、以後はキャッシュされたものを返す。
*/
function getLogger(moduleName) {
if (!loggers[moduleName]) {
const { transport, moduleLogLevels, level: loglevel } = loggerConfig;
const level = moduleLogLevels[moduleName] ?? loglevel;
// console.log(`${moduleName}はなかったので${level}で作る`)
loggers[moduleName] = (0, pino_1.default)({
level,
transport,
}).child({ module: moduleName });
}
return loggers[moduleName];
}
//# sourceMappingURL=logger.js.map