aboutsummaryrefslogtreecommitdiff
path: root/node_modules/loglevelnext/factory/PrefixFactory.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/loglevelnext/factory/PrefixFactory.js')
-rw-r--r--node_modules/loglevelnext/factory/PrefixFactory.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/node_modules/loglevelnext/factory/PrefixFactory.js b/node_modules/loglevelnext/factory/PrefixFactory.js
new file mode 100644
index 00000000..0f2c3975
--- /dev/null
+++ b/node_modules/loglevelnext/factory/PrefixFactory.js
@@ -0,0 +1,46 @@
+'use strict';
+
+const MethodFactory = require('../lib/MethodFactory');
+
+const defaults = {
+ level: opts => `[${opts.level}]`,
+ name: opts => opts.logger.name,
+ template: '{{time}} {{level}} ',
+ time: () => new Date().toTimeString().split(' ')[0]
+};
+
+module.exports = class PrefixFactory extends MethodFactory {
+ constructor(logger, options) {
+ super(logger);
+ this.options = Object.assign({}, defaults, options);
+ }
+
+ interpolate(level) {
+ return this.options.template.replace(/{{([^{}]*)}}/g, (stache, prop) => {
+ const fn = this.options[prop];
+
+ if (fn) {
+ return fn({ level, logger: this.logger });
+ }
+
+ return stache;
+ });
+ }
+
+ make(methodName) {
+ const og = super.make(methodName);
+
+ return (...args) => {
+ const output = this.interpolate(methodName);
+ const [first] = args;
+
+ if (typeof first === 'string') {
+ args[0] = output + first;
+ } else {
+ args.unshift(output);
+ }
+
+ og(...args);
+ };
+ }
+};