123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- function maxFileSizeUnitTransform(maxLogSize) {
- if (typeof maxLogSize === 'number' && Number.isInteger(maxLogSize)) {
- return maxLogSize;
- }
- const units = {
- K: 1024,
- M: 1024 * 1024,
- G: 1024 * 1024 * 1024,
- };
- const validUnit = Object.keys(units);
- const unit = maxLogSize.slice(-1).toLocaleUpperCase();
- const value = maxLogSize.slice(0, -1).trim();
- if (validUnit.indexOf(unit) < 0 || !Number.isInteger(Number(value))) {
- throw Error(`maxLogSize: "${maxLogSize}" is invalid`);
- } else {
- return value * units[unit];
- }
- }
- function adapter(configAdapter, config) {
- const newConfig = Object.assign({}, config); // eslint-disable-line prefer-object-spread
- Object.keys(configAdapter).forEach((key) => {
- if (newConfig[key]) {
- newConfig[key] = configAdapter[key](config[key]);
- }
- });
- return newConfig;
- }
- function fileAppenderAdapter(config) {
- const configAdapter = {
- maxLogSize: maxFileSizeUnitTransform
- };
- return adapter(configAdapter, config);
- }
- const adapters = {
- dateFile: fileAppenderAdapter,
- file: fileAppenderAdapter,
- fileSync: fileAppenderAdapter
- };
- module.exports.modifyConfig = config => (adapters[config.type] ? adapters[config.type](config) : config);
|