UNPKG

@aimee-blue/ab-service-kit

Version:
72 lines (56 loc) 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.trimWhitespace = trimWhitespace; exports.isNotEmptyOrLineBreak = isNotEmptyOrLineBreak; exports.transformValue = transformValue; exports.friendlyLogEntry = friendlyLogEntry; exports.createContainerFriendlyLogger = void 0; var _ = require("."); var _util = _interopRequireDefault(require("util")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function trimWhitespace(arg) { if (typeof arg === 'string') { return arg.replace(/^(\s*\n\s*|\s)+/gu, '').replace(/(\s*\n\s*|\s)+$/gu, ''); } return arg; } function isNotEmptyOrLineBreak(arg) { if (typeof arg === 'string') { const trimmed = arg; if (trimmed.length === 0) { return false; } } return true; } const allowedTypes = ['string', 'number', 'boolean']; function transformValue(arg) { if (allowedTypes.includes(typeof arg)) { return arg; } return _util.default.inspect(arg, { compact: true, colors: false, depth: 3 }); } function friendlyLogEntry(...args) { return JSON.stringify(args.map(trimWhitespace).filter(isNotEmptyOrLineBreak).map(transformValue)); } /** * Converts the whole logging entry into a single JSON string which * makes this compatible with Docker and allow multiline data like * exceptions to be retained within same log entry. */ const createContainerFriendlyLogger = () => { const logger = (0, _.createBasicLogger)(); return Object.freeze({ log: (...args) => logger.log(friendlyLogEntry(...args)), warn: (...args) => logger.warn(friendlyLogEntry(...args)), error: (...args) => logger.error(friendlyLogEntry(...args)) }); }; exports.createContainerFriendlyLogger = createContainerFriendlyLogger; //# sourceMappingURL=containerFriendlyLogger.js.map