@alcyone-labs/simple-logger
v1.1.0
Published
A lightweight, truly portable logging library with Zod validation and multi-transport support.
Maintainers
Readme
@alcyone-labs/simple-logger
A lightweight, flexible, and type-safe logging library for TypeScript applications.
Features
- Transports: Plug-and-play transports (Console, File, Remote, etc.)
- Scoped Logging: Create scoped loggers with persistent contextual metadata.
- Type-Safe: Built with Zod for robust data validation and generic support.
- Extensible: Easy to add custom transports.
Installation
pnpm add @alcyone-labs/simple-loggerQuick Start
import { useLogging } from "@alcyone-labs/simple-logger";
const logger = useLogging();
logger.info({
message: "Hello world!",
data: {
metadata: { env: "production" },
foo: "bar",
},
});Scoped Logging
Scoped loggers allow you to attach metadata to every log message generated by that logger instance. This is particularly useful for tracking requests or service-specific logs.
import { useLogging } from "@alcyone-labs/simple-logger";
// Create a logger for a specific service
const serviceLogger = useLogging({ service: "auth-api" });
function handleRequest(userId: string) {
// Create a sub-logger for a specific request
const logger = useLogging({ userId });
logger.info({
message: "User login attempt",
data: {
metadata: { method: "oauth" },
},
});
}Custom Transports
You can easily implement your own transports by matching the ITransport interface.
import {
addTransport,
ConsoleTransport,
RemoteTransport,
type ITransport,
type TLog,
} from "@alcyone-labs/simple-logger";
// Add a remote logger
addTransport(new RemoteTransport("https://logs.example.com", "error"));
// Add a console logger with debug level
addTransport(new ConsoleTransport("debug"));
// Or implement your own
class MyCustomTransport implements ITransport {
constructor(public level = "info") {}
info(data: TLog) {
/* ... */
}
// ...
}API Reference
useLogging(metadata?: Record<string, any>)
Returns a logger object with info, debug, warn, and error methods. Any metadata passed here will be merged into every log message.
configureLogger(options: { transports?: ITransport[] })
Resets the logger configuration with a new set of transports.
addTransport(transport: ITransport)
Adds a new transport to the existing list.
TLog
The type of the log message object, validated via Zod.
{
message: string;
data: {
metadata?: Record<string, any>;
[key: string]: any;
}
}License
MIT
