@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 });
}

Readme

Keywords

none

Package Sidebar

Install

npm i @intheroomglobal/cf-worker-logger

Weekly Downloads

0

Version

0.4.0

License

ISC

Unpacked Size

20.5 kB

Total Files

15

Last publish

Collaborators

  • leesus
  • scruffymongrel