From 3e91cec37658b7c4a775fbc90bde900526acfa05 Mon Sep 17 00:00:00 2001 From: Kevin Aleman Date: Mon, 19 Jan 2026 09:12:48 -0600 Subject: [PATCH] adapt logs --- .../functions/getWorkspaceAccessToken.ts | 12 ++++++--- .../supportedVersionsToken.ts | 10 +++++-- .../server/startup/custom-sounds.js | 5 +++- .../server/startup/emoji-custom.js | 5 +++- .../server/config/_configUploadStorage.ts | 5 +++- .../app/file-upload/server/lib/FileUpload.ts | 9 +++++-- .../app/lib/server/functions/setUserAvatar.ts | 27 ++++++++++++++----- .../app/livechat/server/sendMessageBySMS.ts | 6 ++++- .../server/functions/sendMail.ts | 10 +++++-- .../server/unreadMessages.ts | 5 +++- .../meteor-accounts-saml/server/lib/SAML.ts | 5 +++- .../server/lib/settings.ts | 5 +++- .../meteor-accounts-saml/server/listener.ts | 7 +++-- apps/meteor/app/push/server/apn.ts | 16 ++++++++--- apps/meteor/app/push/server/push.ts | 21 ++++++++++++--- 15 files changed, 116 insertions(+), 32 deletions(-) diff --git a/apps/meteor/app/cloud/server/functions/getWorkspaceAccessToken.ts b/apps/meteor/app/cloud/server/functions/getWorkspaceAccessToken.ts index 6595c8e90fc48..3545e734004ca 100644 --- a/apps/meteor/app/cloud/server/functions/getWorkspaceAccessToken.ts +++ b/apps/meteor/app/cloud/server/functions/getWorkspaceAccessToken.ts @@ -34,13 +34,17 @@ export async function getWorkspaceAccessToken(forceNew = false, scope = '', save const workspaceCredentials = await WorkspaceCredentials.getCredentialByScope(scope); if (workspaceCredentials && !hasWorkspaceAccessTokenExpired(workspaceCredentials) && !forceNew) { - SystemLogger.debug( - `Workspace credentials cache hit using scope: ${scope}. Avoiding generating a new access token from cloud services.`, - ); + SystemLogger.debug({ + msg: 'Workspace credentials cache hit. Avoiding generating a new access token from cloud services.', + scope, + }); return workspaceCredentials.accessToken; } - SystemLogger.debug(`Workspace credentials cache miss using scope: ${scope}, fetching new access token from cloud services.`); + SystemLogger.debug({ + msg: 'Workspace credentials cache miss, fetching new access token from cloud services.', + scope, + }); const accessToken = await getWorkspaceAccessTokenWithScope({ scope, throwOnError }); diff --git a/apps/meteor/app/cloud/server/functions/supportedVersionsToken/supportedVersionsToken.ts b/apps/meteor/app/cloud/server/functions/supportedVersionsToken/supportedVersionsToken.ts index b14d3a77ec4a0..2643b673c5b24 100644 --- a/apps/meteor/app/cloud/server/functions/supportedVersionsToken/supportedVersionsToken.ts +++ b/apps/meteor/app/cloud/server/functions/supportedVersionsToken/supportedVersionsToken.ts @@ -64,7 +64,10 @@ const cacheValueInSettings = ( reset: (retry?: number) => Promise; } => { const reset = async (retry?: number) => { - SystemLogger.debug(`Resetting cached value ${key} in settings`); + SystemLogger.debug({ + msg: 'Resetting cached value in settings', + key, + }); const value = await fn(retry); if ( @@ -181,7 +184,10 @@ const getSupportedVersionsToken = async (retry = 0) => { 5000 * Math.pow(2, retry), ); } else { - SystemLogger.error(`Failed to get supported versions from cloud after ${retry} retries.`); + SystemLogger.error({ + msg: 'Failed to get supported versions from cloud after retries.', + retry, + }); await buildVersionUpdateMessage(supportedVersions?.versions); } diff --git a/apps/meteor/app/custom-sounds/server/startup/custom-sounds.js b/apps/meteor/app/custom-sounds/server/startup/custom-sounds.js index 2f4f77aa0bd2d..117a7d3c9e759 100644 --- a/apps/meteor/app/custom-sounds/server/startup/custom-sounds.js +++ b/apps/meteor/app/custom-sounds/server/startup/custom-sounds.js @@ -20,7 +20,10 @@ Meteor.startup(() => { throw new Error(`Invalid RocketChatStore type [${storeType}]`); } - SystemLogger.info(`Using ${storeType} for custom sounds storage`); + SystemLogger.info({ + msg: 'Using custom sounds storage', + storeType, + }); let path = '~/uploads'; if (settings.get('CustomSounds_FileSystemPath') != null) { diff --git a/apps/meteor/app/emoji-custom/server/startup/emoji-custom.js b/apps/meteor/app/emoji-custom/server/startup/emoji-custom.js index 28e82cf0849ed..fed5123b115f4 100644 --- a/apps/meteor/app/emoji-custom/server/startup/emoji-custom.js +++ b/apps/meteor/app/emoji-custom/server/startup/emoji-custom.js @@ -21,7 +21,10 @@ Meteor.startup(() => { throw new Error(`Invalid RocketChatStore type [${storeType}]`); } - SystemLogger.info(`Using ${storeType} for custom emoji storage`); + SystemLogger.info({ + msg: 'Using custom emoji storage', + storeType, + }); let path = '~/uploads'; if (settings.get('EmojiUpload_FileSystemPath') != null) { diff --git a/apps/meteor/app/file-upload/server/config/_configUploadStorage.ts b/apps/meteor/app/file-upload/server/config/_configUploadStorage.ts index 55cc1afbbab16..8629304cb2984 100644 --- a/apps/meteor/app/file-upload/server/config/_configUploadStorage.ts +++ b/apps/meteor/app/file-upload/server/config/_configUploadStorage.ts @@ -13,7 +13,10 @@ const configStore = _.debounce(() => { const store = settings.get('FileUpload_Storage_Type'); if (store) { - SystemLogger.info(`Setting default file store to ${store}`); + SystemLogger.info({ + msg: 'Setting default file store', + store, + }); UploadFS.getStores().Avatars = UploadFS.getStore(`${store}:Avatars`); UploadFS.getStores().Uploads = UploadFS.getStore(`${store}:Uploads`); UploadFS.getStores().UserDataFiles = UploadFS.getStore(`${store}:UserDataFiles`); diff --git a/apps/meteor/app/file-upload/server/lib/FileUpload.ts b/apps/meteor/app/file-upload/server/lib/FileUpload.ts index 3d3aa7d399859..8e54f6d627aa5 100644 --- a/apps/meteor/app/file-upload/server/lib/FileUpload.ts +++ b/apps/meteor/app/file-upload/server/lib/FileUpload.ts @@ -537,12 +537,17 @@ export const FileUpload = { getStoreByName(handlerName?: string) { if (!handlerName) { - SystemLogger.error(`Empty Upload handler does not exists`); + SystemLogger.error({ + msg: 'Empty Upload handler does not exists', + }); throw new Error(`Empty Upload handler does not exists`); } if (this.handlers[handlerName] == null) { - SystemLogger.error(`Upload handler "${handlerName}" does not exists`); + SystemLogger.error({ + msg: 'Upload handler does not exists', + handlerName, + }); } return this.handlers[handlerName]; }, diff --git a/apps/meteor/app/lib/server/functions/setUserAvatar.ts b/apps/meteor/app/lib/server/functions/setUserAvatar.ts index e5a12b110e2b9..85e12ef044f44 100644 --- a/apps/meteor/app/lib/server/functions/setUserAvatar.ts +++ b/apps/meteor/app/lib/server/functions/setUserAvatar.ts @@ -114,7 +114,11 @@ export async function setUserAvatar( try { response = await fetch(dataURI, { redirect: 'error' }); } catch (e) { - SystemLogger.info(`Not a valid response, from the avatar url: ${encodeURI(dataURI)}`); + SystemLogger.info({ + msg: 'Not a valid response from the avatar url', + url: encodeURI(dataURI), + err: e, + }); throw new Meteor.Error('error-avatar-invalid-url', `Invalid avatar URL: ${encodeURI(dataURI)}`, { function: 'setUserAvatar', url: dataURI, @@ -123,7 +127,12 @@ export async function setUserAvatar( if (response.status !== 200) { if (response.status !== 404) { - SystemLogger.info(`Error while handling the setting of the avatar from a url (${encodeURI(dataURI)}) for ${user.username}`); + SystemLogger.info({ + msg: 'Error while handling the setting of the avatar from a url', + url: encodeURI(dataURI), + username: user.username, + status: response.status, + }); throw new Meteor.Error( 'error-avatar-url-handling', `Error while handling avatar setting from a URL (${encodeURI(dataURI)}) for ${user.username}`, @@ -131,7 +140,11 @@ export async function setUserAvatar( ); } - SystemLogger.info(`Not a valid response, ${response.status}, from the avatar url: ${dataURI}`); + SystemLogger.info({ + msg: 'Not a valid response from the avatar url', + status: response.status, + url: dataURI, + }); throw new Meteor.Error('error-avatar-invalid-url', `Invalid avatar URL: ${dataURI}`, { function: 'setUserAvatar', url: dataURI, @@ -139,9 +152,11 @@ export async function setUserAvatar( } if (!/image\/.+/.test(response.headers.get('content-type') || '')) { - SystemLogger.info( - `Not a valid content-type from the provided url, ${response.headers.get('content-type')}, from the avatar url: ${dataURI}`, - ); + SystemLogger.info({ + msg: 'Not a valid content-type from the provided avatar url', + contentType: response.headers.get('content-type'), + url: dataURI, + }); throw new Meteor.Error('error-avatar-invalid-url', `Invalid avatar URL: ${dataURI}`, { function: 'setUserAvatar', url: dataURI, diff --git a/apps/meteor/app/livechat/server/sendMessageBySMS.ts b/apps/meteor/app/livechat/server/sendMessageBySMS.ts index 5b79806951ca1..2d370410fa337 100644 --- a/apps/meteor/app/livechat/server/sendMessageBySMS.ts +++ b/apps/meteor/app/livechat/server/sendMessageBySMS.ts @@ -63,7 +63,11 @@ callbacks.add( try { await SMSService.send(room.sms.from, visitor.phone[0].phoneNumber, message.msg, extraData); - callbackLogger.debug(`SMS message sent to ${visitor.phone[0].phoneNumber} via ${service}`); + callbackLogger.debug({ + msg: 'SMS message sent', + phoneNumber: visitor.phone[0].phoneNumber, + service, + }); } catch (e) { callbackLogger.error(e); } diff --git a/apps/meteor/app/mail-messages/server/functions/sendMail.ts b/apps/meteor/app/mail-messages/server/functions/sendMail.ts index 50435bc248129..c0e179d919d0a 100644 --- a/apps/meteor/app/mail-messages/server/functions/sendMail.ts +++ b/apps/meteor/app/mail-messages/server/functions/sendMail.ts @@ -57,7 +57,10 @@ export const sendMail = async function ({ email, }); - SystemLogger.debug(`Sending email to ${email}`); + SystemLogger.debug({ + msg: 'Sending email', + email, + }); return Mailer.send({ to: email, from, @@ -83,7 +86,10 @@ export const sendMail = async function ({ name: escapeHTML(user.name || ''), email: escapeHTML(email), }); - SystemLogger.debug(`Sending email to ${email}`); + SystemLogger.debug({ + msg: 'Sending email', + email, + }); await Mailer.send({ to: email, from, diff --git a/apps/meteor/app/message-mark-as-unread/server/unreadMessages.ts b/apps/meteor/app/message-mark-as-unread/server/unreadMessages.ts index 202dde93d062d..ccf972c561e31 100644 --- a/apps/meteor/app/message-mark-as-unread/server/unreadMessages.ts +++ b/apps/meteor/app/message-mark-as-unread/server/unreadMessages.ts @@ -69,7 +69,10 @@ export const unreadMessages = async (userId: string, firstUnreadMessage?: Pick role._id); if (roles.length !== normalizedRoleNamesOrIds.length) { - SystemLogger.warn(`Failed to convert some role names to ids: ${normalizedRoleNamesOrIds.join(', ')}`); + SystemLogger.warn({ + msg: 'Failed to convert some role names to ids', + roles: normalizedRoleNamesOrIds, + }); } if (!roles.length) { diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts index 917032c54306e..3b93fe22c88b4 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts @@ -151,7 +151,10 @@ export const loadSamlServiceProviders = async function (): Promise { }; export const addSamlService = function (name: string): void { - SystemLogger.warn(`Adding ${name} is deprecated`); + SystemLogger.warn({ + msg: 'Adding SAML service is deprecated', + serviceName: name, + }); }; export const addSettings = async function (name: string): Promise { diff --git a/apps/meteor/app/meteor-accounts-saml/server/listener.ts b/apps/meteor/app/meteor-accounts-saml/server/listener.ts index 8cdf7c9e6f636..9af8c4d84c2d1 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/listener.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/listener.ts @@ -54,14 +54,17 @@ const middleware = async function (req: express.Request, res: ServerResponse, ne const service = SAMLUtils.getServiceProviderOptions(samlObject.serviceName); if (!service) { - SystemLogger.error(`${samlObject.serviceName} service provider not found`); + SystemLogger.error({ + msg: 'SAML service provider not found', + serviceName: samlObject.serviceName, + }); throw new Error('SAML Service Provider not found.'); } await SAML.processRequest(req, res, service, samlObject); } catch (err) { // @ToDo: Ideally we should send some error message to the client, but there's no way to do it on a redirect right now. - SystemLogger.error(err); + SystemLogger.error({ err }); const url = Meteor.absoluteUrl('home'); res.writeHead(302, { diff --git a/apps/meteor/app/push/server/apn.ts b/apps/meteor/app/push/server/apn.ts index cd335aa06bad6..634665cad9403 100644 --- a/apps/meteor/app/push/server/apn.ts +++ b/apps/meteor/app/push/server/apn.ts @@ -70,10 +70,17 @@ export const sendAPN = ({ void apnConnection.send(note, userToken).then((response) => { response.failed.forEach((failure) => { - logger.debug(`Got error code ${failure.status} for token ${userToken}`); + logger.debug({ + msg: 'Got error code for APN token', + status: failure.status, + token: userToken, + }); if (['400', '410'].includes(String(failure.status))) { - logger.debug(`Removing token ${userToken}`); + logger.debug({ + msg: 'Removing APN token', + token: userToken, + }); _removeToken({ apn: userToken, }); @@ -105,7 +112,10 @@ export const initAPN = ({ options, absoluteUrl }: { options: RequiredField`, err: response }); + logger.error({ msg: 'Error sending push to gateway', tries, err: response }); if (tries <= 4) { // [1, 2, 4, 8, 16] minutes (total 31) @@ -368,7 +368,11 @@ class PushClass { throw new Error('Push.send: option "text" not a string'); } - logger.debug(`send message "${notification.title}" to userId`, notification.userId); + logger.debug({ + msg: 'send message to userId', + title: notification.title, + userId: notification.userId, + }); const query = { userId: notification.userId, @@ -389,7 +393,12 @@ class PushClass { } if (settings.get('Log_Level') === '2') { - logger.debug(`Sent message "${notification.title}" to ${countApn.length} ios apps ${countGcm.length} android apps`); + logger.debug({ + msg: 'Sent message to apps', + title: notification.title, + iosApps: countApn.length, + androidApps: countGcm.length, + }); // Add some verbosity about the send result, making sure the developer // understands what just happened. @@ -489,7 +498,11 @@ class PushClass { try { await this.sendNotification(notification); } catch (error: any) { - logger.debug(`Could not send notification to user "${notification.userId}", Error: ${error.message}`); + logger.debug({ + msg: 'Could not send notification to user', + userId: notification.userId, + err: error, + }); logger.debug(error.stack); } }