@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
72 lines (56 loc) • 1.85 kB
JavaScript
;
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