diff --git a/apps/client/src/services/frontend_script_api.ts b/apps/client/src/services/frontend_script_api.ts index 13b407a81..bc1e372e4 100644 --- a/apps/client/src/services/frontend_script_api.ts +++ b/apps/client/src/services/frontend_script_api.ts @@ -21,6 +21,7 @@ import dayjs from "dayjs"; import type NoteContext from "../components/note_context.js"; import type NoteDetailWidget from "../widgets/note_detail.js"; import type Component from "../components/component.js"; +import { formatLogMessage } from "@triliumnext/commons"; /** * A whole number @@ -455,7 +456,7 @@ export interface Api { /** * Log given message to the log pane in UI */ - log(message: string): void; + log(message: string | object): void; } /** @@ -696,7 +697,7 @@ function FrontendScriptApi(this: Api, startNote: FNote, currentNote: FNote, orig this.log = (message) => { const { noteId } = this.startNote; - message = `${utils.now()}: ${message}`; + message = `${utils.now()}: ${formatLogMessage(message)}`; console.log(`Script ${noteId}: ${message}`); diff --git a/apps/server/src/services/backend_script_api.ts b/apps/server/src/services/backend_script_api.ts index 60af0fb97..f7ee60e39 100644 --- a/apps/server/src/services/backend_script_api.ts +++ b/apps/server/src/services/backend_script_api.ts @@ -23,6 +23,7 @@ import exportService from "./export/zip.js"; import syncMutex from "./sync_mutex.js"; import backupService from "./backup.js"; import optionsService from "./options.js"; +import { formatLogMessage } from "@triliumnext/commons"; import type BNote from "../becca/entities/bnote.js"; import type AbstractBeccaEntity from "../becca/entities/abstract_becca_entity.js"; import type BBranch from "../becca/entities/bbranch.js"; @@ -221,7 +222,7 @@ export interface Api { /** * Log given message to trilium logs and log pane in UI */ - log(message: string): void; + log(message: string | object): void; /** * Returns root note of the calendar. @@ -556,7 +557,8 @@ function BackendScriptApi(this: Api, currentNote: BNote, apiParams: ApiParams) { this.logMessages = {}; this.logSpacedUpdates = {}; - this.log = (message) => { + this.log = (rawMessage) => { + const message = formatLogMessage(rawMessage); log.info(message); if (!this.startNote) { diff --git a/packages/commons/src/index.ts b/packages/commons/src/index.ts index ef60f29be..c74cd758f 100644 --- a/packages/commons/src/index.ts +++ b/packages/commons/src/index.ts @@ -10,3 +10,4 @@ export * from "./lib/server_api.js"; export * from "./lib/shared_constants.js"; export * from "./lib/ws_api.js"; export * from "./lib/attribute_names.js"; +export * from "./lib/utils.js"; diff --git a/packages/commons/src/lib/utils.ts b/packages/commons/src/lib/utils.ts new file mode 100644 index 000000000..936c63c16 --- /dev/null +++ b/packages/commons/src/lib/utils.ts @@ -0,0 +1,11 @@ +export function formatLogMessage(message: string | object) { + if (typeof message === "object") { + try { + return JSON.stringify(message, null, 4); + } catch (e) { + return message.toString(); + } + } + + return message; +}