fixparser-plugin-log-console
Version:
Console / JSON Log transport for FIXParser
70 lines (69 loc) • 1.84 kB
JavaScript
// src/ConsoleLogTransport.ts
var ConsoleLogTransport = class {
format;
useStderr;
constructor({ format = "json", useStderr = false }) {
this.format = format;
this.useStderr = useStderr;
}
/**
* Configures the format for console logging (either 'console' for text, 'json', or 'jsonrpc').
*/
configure(config) {
this.format = config.format || "json";
if (config.useStderr !== void 0) {
this.useStderr = config.useStderr;
}
}
/**
* Sends the log message to the console in the configured format.
*/
async send(log) {
const logMethod = this.useStderr ? console.error : console.log;
if (this.format === "json") {
logMethod(JSON.stringify(log));
} else if (this.format === "jsonrpc") {
const { message, ...rest } = log;
const jsonrpcMessage = {
jsonrpc: "2.0",
method: log.level,
params: {
message,
...rest
}
};
logMethod(JSON.stringify(jsonrpcMessage));
} else {
const { name, id, message, level, ...additionalProperties } = log;
const kv = Object.entries(additionalProperties).map(([key, value]) => `${key}: ${value}`);
let logMessage = "";
if (name) {
logMessage += `${name} `;
}
logMessage += `${id}: ${message}`;
void kv;
void level;
logMethod(logMessage, kv.join(", "));
}
}
/**
* Flushes the log buffer (if any buffering mechanism exists).
*/
async flush() {
}
/**
* Closes the transport (not needed for console, but keeping the method for consistency).
*/
async close() {
}
/**
* Returns the status of the transport (always "connected" for console).
*/
status() {
return "connected";
}
};
export {
ConsoleLogTransport
};
//# sourceMappingURL=ConsoleLogTransport.mjs.map