Skip to content
/ elylog Public

A plugin for Elysia.js that handles basic stdout logging.

License

Notifications You must be signed in to change notification settings

eajr/elylog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@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

License

MIT

About

A plugin for Elysia.js that handles basic stdout logging.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published