Awesome
<div align="center"> <h1>workers-logger</h1> <p align="center">fast and effective logging for <a href="https://workers.cloudflare.com/">Cloudflare Workers</a></p> <hr /> <span> <a href="https://github.com/maraisr/workers-logger/actions/workflows/ci.yml"> <img src="https://github.com/maraisr/workers-logger/actions/workflows/ci.yml/badge.svg"/> </a> <a href="https://npm-stat.com/charts.html?package=workers-logger"> <img src="https://badgen.net/npm/dm/workers-logger" alt="downloads"/> </a> <a href="https://packagephobia.com/result?p=workers-logger"> <img src="https://badgen.net/packagephobia/install/workers-logger" alt="size"/> </a> </span> </div>⚡️ Features
- Super featherweight
- Custom Reporters
- Built on top of
diary
- Optimized to not hinder critical path
⚙️ Install
npm add workers-logger
🚀 Usage
import { track } from 'workers-logger';
addEventListener('fetch', (event) => {
const { request } = event;
const log = track(request);
log.info('gearing up to make a response');
const res = new Response('hi there');
event.waitUntil(log.report(res));
return res;
});
to see more visit examples
🔎 API
track(request: Request, name?: string, reporter?: Reporter)
Returns log functions and our .report
method.
report(response: Response)
Returns a promise with intended usage with event.waitUntil
. And thus in terns runs your reporter
defined on track.
Reporters
A reporter is a single function ran at then end of .report
. And gives you the ability to
send that data somewhere, or merely into
dashboard logs.
import type { Reporter } from 'workers-logger';
import { track } from 'workers-logger';
const reporter: Reporter = (events, { req, res }) => {
// do whatever you want
};
addEventListener('fetch', (event) => {
const { request } = event;
const log = track(request, 'my-worker', reporter);
log.info('gearing up to make a response');
const res = new Response('hi there');
event.waitUntil(log.report(res));
return res;
});
example when sending into Logflare at /examples/workers/logflare
License
MIT © Marais Rossouw