@eajr/elylog
v1.0.1
Published
A plugin for Elysia.js that handles basic stdout logging
Downloads
33
Maintainers
Readme
@eajr/elylog
A plugin for Elysia.js that handles basic stdout logging.
Installation
bun add @eajr/elylog
Usage
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}`);
Example output
{"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}
Custom options
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;
}
Additional notes
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.
Changelog
v1.0.0
- Changed text logging (via context logger) to object logging
- Added multi-file elysia example api in
/examples/multifile