as-services/libs/utils/debug/time-logger.js

37 lines
804 B
JavaScript

const prettyMilliseconds = require("pretty-ms")
function TimeLogger({
startTime = new Date(),
logger = console,
label = "elapsed",
logLevel = "debug",
} = {}) {
this.startTime = startTime
this.logger = logger
this.label = label
this.logLevel = logLevel
}
Object.assign(TimeLogger.prototype, {
end(options = {}) {
if (options.logger) {
this.logger = options.logger
}
if (options.label) {
this.label = options.label
}
if (options.logLevel) {
this.logLevel = options.logLevel
}
this.logger[this.logLevel](
`${this.label}: ${prettyMilliseconds(new Date() - this.startTime)}`
)
},
})
function createTimeLogger(params) {
return new TimeLogger(params)
}
createTimeLogger.TimeLogger = TimeLogger
module.exports = createTimeLogger