A plugin for Elysia.js that handles basic stdout logging.
bun add @eajr/elylogbun testTests run in GitHub Actions on every pull request and on pushes to main via .github/workflows/test.yml.
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 IOptions {
// 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.
Elylog supports both onAfterResponse and onResponse lifecycle hooks to stay compatible across Elysia versions and adapters (including the Node adapter).
- Changed text logging (via context logger) to object logging
- Added multi-file elysia example api in
/examples/multifile