UNPKG

@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
/** * 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