@intheroomglobal/cf-worker-logger
TypeScript icon, indicating that this package has built-in type declarations

0.4.0 • Public • Published

Cloudflare Worker Logger

A re-usable logger for use in Cloudflare Workers. Extend the class to add custom event transforms and transports. Allows logs to be sent to any destination. In worker environments waitUntil is called automatically when logging.

Installation

npm i -S @intheroomglobal/cf-worker-logger

Usage

Extend the logger to transform events as you require and to send to your logging endpoint:

import Logger, { type LogEvent } from '@intheroomglobal/cf-worker-logger';

type Env = {
  LOGS_URL: 'http://my.logging.service',
  LOGS_TOKEN: 'myapitoken'
}

export class MyLogger extends Logger<Env> {
  transformEvent(event: LogEvent) {
    return {
      ...event,
      my: {
        custom: 'fields'
      }
    };
  }

  send(event: LogEvent) {
    return fetch(this.env.LOGS_URL, {
      method: 'POST',
      headers: {
        'authorization': `Bearer ${this.env.LOGS_TOKEN}`
      },
      body: JSON.stringify(event)
    });
  }
}

  1. Log requests and responses:
export default {
  async fetch(request, env, context) {
    const logger = new MyLogger(request, env, context);
    const start = Date.now();
    const response = new Response('Hello, World!', { status: 200 });
    logger.logResponse(response, Date.now() - start);
    return response;
  }
}
  1. Attach a logger to requests:
import Logger from '@foreverholdings/logflare-logging';

export default {
  async fetch(request, env, context) {
    request.logger = new Logger(request, env, context);
    return handleRequest(request);
  }
}

function handleRequest(request) {
  request.logger.info('Returning a greeting');
  return Response('Hello, World!', { status: 200 });
}

/@intheroomglobal/cf-worker-logger/

    Package Sidebar

    Install

    npm i @intheroomglobal/cf-worker-logger

    Weekly Downloads

    4

    Version

    0.4.0

    License

    ISC

    Unpacked Size

    20.5 kB

    Total Files

    15

    Last publish

    Collaborators

    • leesus
    • scruffymongrel