log-format.util.ts•1.13 kB
/**
 * Log Formatting Utilities
 *
 * Utilities for formatting log messages and metadata
 */
import type { LogMetadata } from "./log.types";
/**
 * Format a log message with optional metadata
 *
 * @param message - The message to format
 * @param metadata - Optional metadata to include
 * @returns Formatted log message string
 */
export function formatLogMessage(
  message: unknown,
  metadata?: LogMetadata,
): string {
  // Convert message to string based on type
  const messageStr =
    typeof message === "string"
      ? message
      : typeof message === "object"
        ? JSON.stringify(message, null, 2)
        : String(message);
  // Add prefix if present
  const prefix = metadata?.prefix ? `[${metadata.prefix}] ` : "";
  // Format additional metadata if present
  const metadataStr =
    metadata && Object.keys(metadata).filter((k) => k !== "prefix").length > 0
      ? `\n${JSON.stringify(
          Object.fromEntries(
            Object.entries(metadata).filter(([k]) => k !== "prefix"),
          ),
          null,
          2,
        )}`
      : "";
  return `${prefix}${messageStr}${metadataStr}`;
}