diff --git a/ee/packages/network-broker/src/LogLevelMixin.ts b/ee/packages/network-broker/src/LogLevelMixin.ts new file mode 100644 index 0000000000000..5cce1fa22975d --- /dev/null +++ b/ee/packages/network-broker/src/LogLevelMixin.ts @@ -0,0 +1,26 @@ +import type { LogLevelSetting } from '@rocket.chat/logger'; +import { logLevel } from '@rocket.chat/logger'; +import { Settings } from '@rocket.chat/models'; +import type { ServiceSchema, Context } from 'moleculer'; + +export const LogLevel: ServiceSchema = { + name: 'LogLevel', + async started() { + const LogLevel = await Settings.getValueById('Log_Level'); + if (LogLevel) { + logLevel.emit('changed', LogLevel as LogLevelSetting); + } + }, + events: { + 'watch.settings': { + handler(ctx: Context<[{ clientAction: string; setting: { _id: string; value: string } }]>) { + const [{ setting }] = ctx.params; + + if (setting._id !== 'Log_Level') { + return; + } + logLevel.emit('changed', setting.value as LogLevelSetting); + }, + }, + }, +}; diff --git a/ee/packages/network-broker/src/NetworkBroker.ts b/ee/packages/network-broker/src/NetworkBroker.ts index 99d8716222413..2ee2508a5916b 100644 --- a/ee/packages/network-broker/src/NetworkBroker.ts +++ b/ee/packages/network-broker/src/NetworkBroker.ts @@ -4,6 +4,7 @@ import { injectCurrentContext, tracerSpan } from '@rocket.chat/tracing'; import type { ServiceBroker, Context, ServiceSchema } from 'moleculer'; import { EnterpriseCheck } from './EnterpriseCheck'; +import { LogLevel } from './LogLevelMixin'; const events: { [k: string]: string } = { onNodeConnected: '$node.connected', @@ -94,7 +95,7 @@ export class NetworkBroker implements IBroker { const service: ServiceSchema = { name, actions: {}, - mixins: !instance.isInternal() ? [EnterpriseCheck] : [], + mixins: !instance.isInternal() ? [EnterpriseCheck, LogLevel] : [], ...(dependencies.length ? { dependencies } : {}), events: instanceEvents.reduce void>>((map, { eventName }) => { map[eventName] = /^\$/.test(eventName)