@wxn0brp/lucerna-log
    Preparing search index...

    @wxn0brp/lucerna-log

    @wxn0brp/lucerna-log

    A lightweight, modular logging utility for TypeScript/JavaScript with pluggable transport support.
    Designed to be simple, extensible, and dependency-free — ideal for projects where existing logging libraries are too complex or too heavy.

    npm install @wxn0brp/lucerna-log
    
    • Minimal core (~5 files)
    • Built-in transports: console, file, ValtheraDB
    • Fully extensible transport system
    • Structured log entries with metadata support
    • Works in any Node.js or server-side environment
    • No runtime dependencies (except peer deps for optional transports)

    See docs.

    import { Logger, ConsoleTransport } from "@wxn0brp/lucerna-log";

    const shortLogger = new Logger();
    const logger = new Logger({
    transports: [new ConsoleTransport()],
    loggerName: "AuthService",
    logLevel: "debug"
    });

    logger.info("User logged in", { userId: 123 });
    logger.warn("JWT expiring soon");
    logger.error("Token invalid", { token: "..." });
    logger.dd({ rawRequest });
    new Logger({
    transports?: Transport[],
    loggerName?: string,
    logLevel?: LogLevelName | Lowercase<LogLevelName>
    })
    logger.debug("Debug message", { extra: "data" });
    logger.info("Something informative");
    logger.warn("Potential issue");
    logger.error("An error occurred", { code: 500 });
    logger.dd(obj1, obj2, "anything else");
    // Passthrough to transport.debug(...)

    Logs to console.log using structured JSON format:

    • timestamp
    • level
    • loggerName
    • message
    • optional meta

    Writes logs to a file (default: logs.txt), in one-line JSON entries per log. Supports async writing with batching (optional).

    new FileTransport("./logs.txt");
    

    Stores logs directly in a ValtheraDB collection.

    new ValtheraDBTransport(
    db: Valthera | ValtheraRemote,
    collection: string = "logs"
    )

    You can define your own transport by implementing:

    interface Transport {
    log(entry: LogEntry): void | Promise<void>;
    debug(entry: LogEntry, ...any: any): void | Promise<void>;
    }
    Level Value
    DEBUG 0
    INFO 1
    WARN 2
    ERROR 3

    Logging below the configured threshold will be ignored.

    • Clear separation: logger vs output handling
    • Extendable with minimal overhead
    • Focused on log structure, not formatting
    • Suitable for microservices, CLIs, and embedded runtimes

    MIT License

    Contributions are welcome! Please fork the repository and submit pull requests.