You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
3.9 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.Logger = exports.LogLevel = void 0;
exports.pipeOutputToLogger = pipeOutputToLogger;
function _bunyan() {
const data = _interopRequireDefault(require("@expo/bunyan"));
_bunyan = function () {
return data;
};
return data;
}
function _isEmpty() {
const data = _interopRequireDefault(require("lodash/isEmpty"));
_isEmpty = function () {
return data;
};
return data;
}
function _isPlainObject() {
const data = _interopRequireDefault(require("lodash/isPlainObject"));
_isPlainObject = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
let LogLevel;
exports.LogLevel = LogLevel;
(function (LogLevel) {
LogLevel["trace"] = "trace";
LogLevel["debug"] = "debug";
LogLevel["info"] = "info";
LogLevel["warn"] = "warn";
LogLevel["error"] = "error";
LogLevel["fatal"] = "fatal";
})(LogLevel || (exports.LogLevel = LogLevel = {}));
class Logger {
constructor(bunyanGetter, extraFields) {
_defineProperty(this, "loggerObj", void 0);
_defineProperty(this, "loggerGetter", void 0);
_defineProperty(this, "extraFields", void 0);
this.loggerObj = _bunyan().default.createLogger({
name: 'xdl-detach'
});
this.loggerGetter = bunyanGetter;
this.extraFields = extraFields;
}
configure(loggerObj) {
this.loggerObj = loggerObj;
}
withFields(extraFields) {
const getter = this.loggerGetter || (() => this.loggerObj);
return new Logger(getter, {
...this.extraFields,
...extraFields
});
}
trace(...all) {
this.logLine(LogLevel.trace, ...all);
}
debug(...all) {
this.logLine(LogLevel.debug, ...all);
}
info(...all) {
this.logLine(LogLevel.info, ...all);
}
warn(...all) {
this.logLine(LogLevel.warn, ...all);
}
error(...all) {
this.logLine(LogLevel.error, ...all);
}
fatal(...all) {
this.logLine(LogLevel.fatal, ...all);
}
logLine(level, ...args) {
const argsToLog = [...args];
const extraFieldsFromArgsExist = (0, _isPlainObject().default)(args[0]);
const extraFieldsFromArgs = extraFieldsFromArgsExist ? args[0] : {};
if (extraFieldsFromArgsExist) {
argsToLog.shift();
}
const extraFields = {
...extraFieldsFromArgs,
...this.extraFields
};
if (!(0, _isEmpty().default)(extraFields)) {
argsToLog.unshift(extraFields);
}
if (this.loggerGetter) {
const loggerObj = this.loggerGetter();
loggerObj[level](...argsToLog);
} else {
this.loggerObj[level](...argsToLog);
}
}
}
exports.Logger = Logger;
const LoggerDetach = new Logger();
var _default = LoggerDetach;
exports.default = _default;
function pipeOutputToLogger({
stdout,
stderr
} = {
stdout: null,
stderr: null
}, extraFields = {}, {
stdoutOnly = false,
loggerLineTransformer
} = {}) {
if (stdout) {
stdout.on('data', chunk => logMultiline(chunk, {
...extraFields,
source: 'stdout'
}, loggerLineTransformer));
}
if (stderr) {
const source = stdoutOnly ? 'stdout' : 'stderr';
stderr.on('data', chunk => logMultiline(chunk, {
...extraFields,
source
}, loggerLineTransformer));
}
}
function logMultiline(data, extraFields, loggerLineTransformer) {
if (!data) {
return;
}
const lines = String(data).split('\n');
lines.forEach(line => {
const lineToPrint = loggerLineTransformer ? loggerLineTransformer(line) : line;
if (lineToPrint) {
const args = [lineToPrint];
if (!(0, _isEmpty().default)(extraFields)) {
args.unshift(extraFields);
}
LoggerDetach.info(...args);
}
});
}
//# sourceMappingURL=Logger.js.map