diff --git a/src/puter-js/src/index.js b/src/puter-js/src/index.js index 2120ae68a..9c9b47a8a 100644 --- a/src/puter-js/src/index.js +++ b/src/puter-js/src/index.js @@ -159,7 +159,7 @@ window.puter = (function() { logger = new putility.libs.log.CategorizedToggleLogger( { delegate: logger }); const cat_logger = logger; - + // create facade for easy logging this.log = new putility.libs.log.LoggerFacade({ impl: logger, @@ -248,6 +248,20 @@ window.puter = (function() { console.error('Error accessing localStorage:', error); } } + + // Add prefix logger (needed to happen after modules are initialized) + (async () => { + const whoami = await this.auth.whoami(); + logger = new putility.libs.log.PrefixLogger({ + delegate: logger, + prefix: '[' + + (whoami?.app_name ?? this.appInstanceID ?? 'HOST') + + '] ', + }); + + this.log.impl = logger; + })(); + } registerModule (name, instance) { diff --git a/src/putility/src/libs/log.js b/src/putility/src/libs/log.js index 46846ce02..7fd5eb6f8 100644 --- a/src/putility/src/libs/log.js +++ b/src/putility/src/libs/log.js @@ -135,6 +135,30 @@ class ConsoleLogger extends AdvancedBase { } } +class PrefixLogger extends AdvancedBase { + static PROPERTIES = { + prefix: { + construct: true, + value: '' + }, + delegate: { + construct: true, + value: null, + adapt: v => AS(v, TLogger), + } + } + static IMPLEMENTS = { + [TLogger]: { + log (level, message, fields, values) { + return this.delegate.log( + level, this.prefix + message, + fields, values + ); + } + } + } +} + class FieldsLogger extends AdvancedBase { static PROPERTIES = { fields: { @@ -210,6 +234,7 @@ module.exports = { CategorizedToggleLogger, ToggleLogger, ConsoleLogger, + PrefixLogger, FieldsLogger, LoggerFacade, };