diff --git a/src/backend/src/modules/core/LogService.js b/src/backend/src/modules/core/LogService.js index f8fc7a6f9..83413b4e5 100644 --- a/src/backend/src/modules/core/LogService.js +++ b/src/backend/src/modules/core/LogService.js @@ -30,6 +30,7 @@ const winston = require('winston'); const { Context } = require('../../util/context'); const BaseService = require('../../services/BaseService'); const { stringify_log_entry } = require('./lib/log'); +const { whatis } = require('../../util/langutil'); require('winston-daily-rotate-file'); const WINSTON_LEVELS = { @@ -99,12 +100,18 @@ class LogContext { } if ( ! fields.actor && x && x.get('actor') ) { try { - fields.actor = x.get('actor').uid; + fields.actor = x.get('actor'); } catch (e) { console.log('error logging actor (this is probably fine):', e); } } } + for ( const k in fields ) { + if ( + whatis(fields[k]) === 'object' && + typeof fields[k].toLogFields === 'function' + ) fields[k] = fields[k].toLogFields(); + } this.logService.log_( log_level, this.crumbs, diff --git a/src/backend/src/services/auth/Actor.js b/src/backend/src/services/auth/Actor.js index 215032c7c..ac55e3343 100644 --- a/src/backend/src/services/auth/Actor.js +++ b/src/backend/src/services/auth/Actor.js @@ -91,6 +91,15 @@ class Actor extends AdvancedBase { get uid () { return this.type.uid; } + + toLogFields () { + return { + uid: this.type.uid, + ...(this.type.user ? { + username: this.type.user.username, + } : {}) + } + } /** * Generates a cryptographically-secure deterministic UUID