A plugin for Elysia.js that handles basic stdout logging.
bun add @eajr/elylog
import { Elysia } from "elysia";
import { elylog, LogType } from "@eajr/elylog";
const app = new Elysia()
.use(elylog())
.get("/", (ctx) => {
ctx.log(LogType.INFO, { message: "There was an error" });
ctx.log(LogType.ERROR, { message: "Here's some info" });
ctx.log(LogType.WARNING, { message: "Beware!" });
return "Hello World";
})
.listen(8080);
console.log(`Listening on http://${app.server!.hostname}:${app.server!.port}`);
{"timestamp":"2024-03-19T20:53:27.453Z","type":"SYS","uuid":"1967b8c9-588b-4d43-933d-1658c453efc6","method":"GET","path":"/info"}
{"timestamp":"2024-03-19T20:53:27.453Z","type":"INFO","uuid":"1967b8c9-588b-4d43-933d-1658c453efc6","data": { "message":"info test"}}
{"timestamp":"2024-03-19T20:53:27.454Z","type":"META","uuid":"1967b8c9-588b-4d43-933d-1658c453efc6","duration":6}
export interface Options {
// Elylog generates a request ID (uuidv4) by default on request.
// Set this to a header to use request id's generated by client
// Default: null
headerForRequestId?: string;
// Log all requests (SYS log type): true (default)
logRequests?: boolean;
// Log metadata at the end of life cycle (META log type): true (default)
// Metadata:
// - Duration (in ms)
logMetaData?: boolean;
// Custom print function for request logs (SYS log type): JSON (default)
requestPrintFn?(log: LogRequest): void;
// Custom print function for log messages (INFO|WARNING|ERROR): JSON (default)
logPrintFn?(log: LogMessage): void;
// Custom print function for metadata messages (META): JSON (default)
metadataPrintFn?(log: LogMetaData): void;
}
For some reason the Elysia-Swagger plugin breaks if you instantiate elylog before the swagger plugin. It also breaks for other logging plugins, so make sure to .use(elylog())
after you use the swagger plugin.
- Changed text logging (via context logger) to object logging
- Added multi-file elysia example api in
/examples/multifile