@userfrosting/ts-log-adapter-gulplog
Version:
An adapter for the ts-log interface that pushes logging to gulplog with optional arguments JSON encoded.
76 lines • 2.5 kB
JavaScript
/**
* An adapter for the ts-log interface that pushes logging to gulplog with optional arguments JSON encoded.
* @packageDocumentation
*/
import GulpLog from "gulplog";
function log(prefix, logFn, message, args) {
// Handle args
let processedArgs = null;
if (args.length > 0) {
// There are args, stringify them
processedArgs = JSON.stringify(args);
}
// Handle message
let processedMessage = prefix;
if (typeof message === "string") {
// All is well
processedMessage += message;
}
else if (typeof message === "undefined") {
// Make it clear the message is undefined
processedMessage += "(undefined)";
}
else if (message === null) {
// Make it clear the message is null
processedMessage += "(null)";
}
else {
// Final case, stringify it
processedMessage += JSON.stringify(message);
}
if (processedArgs) {
// Scenario 1, args provided
logFn(processedMessage, processedArgs);
}
else {
// Just a message
logFn(processedMessage);
}
}
/**
* `gulplog` logging adapter.
* @public
*/
export class GulpLogLogger {
/**
* @param prefix - Optionally annotate logs with a prefix such as the package name to identify log source.
*/
constructor(prefix) {
this.trace = (message, ...optionalParams) => {
// Trace doesn't exist in gulplog so we need to note the actual log level and throw into debug
function traceDecorate(message, ...args) {
GulpLog.debug(`TRACE ${message}`, ...args);
}
log(this.prefix, traceDecorate, message, optionalParams);
};
this.debug = (message, ...optionalParams) => {
log(this.prefix, GulpLog.debug, message, optionalParams);
};
this.info = (message, ...optionalParams) => {
log(this.prefix, GulpLog.info, message, optionalParams);
};
this.warn = (message, ...optionalParams) => {
log(this.prefix, GulpLog.warn, message, optionalParams);
};
this.error = (message, ...optionalParams) => {
log(this.prefix, GulpLog.error, message, optionalParams);
};
if (prefix) {
this.prefix = `${prefix}: `;
}
else {
this.prefix = "";
}
}
}
//# sourceMappingURL=main.js.map