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
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(...)
ConsoleTransport (default)Logs to console.log using structured JSON format:
timestamplevelloggerNamemessagemetaFileTransportWrites logs to a file (default: logs.txt), in one-line JSON entries per log.
Supports async writing with batching (optional).
new FileTransport("./logs.txt");
ValtheraTransportStores 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.
MIT License
Contributions are welcome! Please fork the repository and submit pull requests.