1.0.1 • Published 2 years ago

@eajr/elylog v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

@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

1.0.1

2 years ago

1.0.0

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago