UNPKG

@livy/util

Version:
135 lines (134 loc) 4.24 kB
"use strict"; /** * Note: The very basic line formatter is implemented in the @livy/util package to avoid circular dependencies */ Object.defineProperty(exports, "__esModule", { value: true }); exports.LineFormatter = void 0; const helpers_1 = require("../helpers"); const abstract_batch_formatter_1 = require("./abstract-batch-formatter"); /** * Serializes a log entry into a single line */ class LineFormatter extends abstract_batch_formatter_1.AbstractBatchFormatter { constructor({ include = {}, ignoreEmptyContext = false, ignoreEmptyExtra = true } = {}) { super(); this.ignoreEmptyContext = ignoreEmptyContext; this.ignoreEmptyExtra = ignoreEmptyExtra; this.include = { datetime: true, channel: false, level: true, severity: false, message: true, context: true, extra: true, ...include }; } /** * @inheritdoc */ format(record) { const formattedExtra = this.include.extra ? this.formatExtra(record.extra, this.ignoreEmptyExtra) : ''; return this.assembleFormattedRecord({ channel: this.include.channel ? this.formatChannel(record.channel) : '', datetime: this.include.datetime ? this.formatDatetime(record.datetime) : '', level: this.include.level ? this.formatLevel(record.level) : '', severity: this.include.severity ? this.formatSeverityMap(record.severity) : '', message: this.include.message ? this.formatMessage(record.message).replace(/\s*\n\s*/g, ' / ') : '', context: this.include.context ? this.formatContext(record.context, this.ignoreEmptyContext && formattedExtra.length === 0) : '', extra: this.include.extra ? formattedExtra : '' }); } /** * Assemble the formatted parts of a record into a string * * @param parts The formatted parts to assemble */ assembleFormattedRecord({ datetime, channel, level, severity, message, context, extra }) { return `${datetime}${channel}${level}${severity}${message}${context}${extra}`; } /** * Format a record's datetime * * @param datetime The DateTime object to format */ formatDatetime(datetime) { return datetime.toFormat('yyyy-MM-dd HH:mm:ss '); } /** * Format a record's level * * @param level The level to format */ formatLevel(level) { return `${level.toUpperCase()} `; } /** * Format a record's severity * * @param severity The severity to format */ formatSeverityMap(severity) { return `[${severity}] `; } /** * Format a record's channel * * @param channel The channel to format */ formatChannel(channel) { return channel + ' '; } /** * Format a record's message * * @param message The message to format */ formatMessage(message) { return message; } /** * Format a record's context object * * @param context The context to format * @param ignoreEmpty Whether to return an empty serialization for an empty context object */ formatContext(context, ignoreEmpty = true) { return this.formatData(context, ignoreEmpty); } /** * Format a record's extra object * * @param context The extra to format * @param ignoreEmpty Whether to return an empty serialization for an empty extra object */ formatExtra(extra, ignoreEmpty = true) { return this.formatData(extra, ignoreEmpty); } /** * Format a single record property * * @param data The data to format * @param ignoreEmpty Whether to return an empty serialization for empty data */ formatData(data, ignoreEmpty = true) { if ((0, helpers_1.isEmpty)(data) && ignoreEmpty) { return ''; } else { return ' ' + JSON.stringify(data); } } } exports.LineFormatter = LineFormatter;