diff --git a/src/formatters.ts b/src/formatters.ts index 0c7be66..b28cd64 100644 --- a/src/formatters.ts +++ b/src/formatters.ts @@ -1,9 +1,11 @@ +import mdcodeblocks from "./formatters/mdcodeblocks"; import mdtable from "./formatters/mdtable"; import ndjson from "./formatters/ndjson"; export const formatters = [ mdtable, ndjson, + mdcodeblocks ] .sort((a, b) => a.title.localeCompare(b.title)); diff --git a/src/formatters/mdcodeblocks.ts b/src/formatters/mdcodeblocks.ts new file mode 100644 index 0000000..98994fc --- /dev/null +++ b/src/formatters/mdcodeblocks.ts @@ -0,0 +1,40 @@ +import { LogEventsFormatter } from "../types"; + +/** + * A formatter that generates a Markdown file containing code blocks, + * where each block represents a log event. + */ +export default { + id: "mdcodeblocks", + title: "Markdown Code Blocks", + description: "Generates a Markdown file containing code blocks.", + fileExt: "md", + + format: ({ timestamp, level, sender, args }) => { + // Format the log message + const logMsg = args + .map((arg) => { + if (typeof arg === "string") { + return arg; + } + if (Array.isArray(arg) && arg.length <= 1) { + if (typeof arg[0] === "string") { + return arg[0]; + } + return JSON.stringify(arg[0], null, 2); + } + return JSON.stringify(arg, null, 2); + }); + + return [ + "```", + `time: ${timestamp.toISOString()}`, + `from: ${sender ?? ""}`, + `level: ${level}`, + logMsg, + "```", + "", + ] + .join("\n"); + }, +};