0.2.0 • Published 9 months ago

webstone-plugin-request-logger-web v0.2.0

Weekly downloads
-
License
-
Repository
-
Last release
9 months ago

request-logger Web - Webstone Plugin

About

This library provides the following features for SvelteKit applications

This library provides an event.locals.logger object for SvelteKit applications. It can be accessed wherever event.locals is available. This includes hooks (handle, and handleError), server-only load functions, and +server.js files. See the docs for potential future locations.

Installation

Install this plugin with the following command:

npm install -D webstone-plugin-request-logger-web

Usage

Create a src/hooks.server.js file, if it doesn't already exist, with the following code:

import { sequence } from '@sveltejs/kit/hooks';
import { addRequestLogger, logRequestDetails } from 'webstone-plugin-request-logger-web';

/** @type {import('@sveltejs/kit').Handle} */
export const handle = sequence(addRequestLogger, logRequestDetails /*, yourHandlers*/);

locals.logger

The logger is available wherever event.locals is available (docs). For example, to use it in a server-only load function or an action within a +page.server.js file:

import type { Actions, PageServerLoad } from './$types';

import { fail } from '@sveltejs/kit';

export const load = (async ({ locals }) => {
	locals.logger.debug('Fetching posts from database...');

	try {
		// TODO: Fetch posts from database
		locals.logger.debug(`Successfully fetched ${posts.length} posts`);
	} catch (error) {
		locals.logger.error(`Failed to fetched ${posts.length} posts`, error);
	}

	return {};
}) satisfies PageServerLoad;

export const actions = {
	create_post: async (event) => {
		const data = await event.request.formData();
		const author = data.get('author')?.toString() || '';
		const content = data.get('content')?.toString() || '';
		event.locals.logger.log('Creating a new post...', {
			author,
			content
		});

		try {
			// TODO: Persist the new post in the database
			event.locals.logger.debug('Successfully created the post');
		} catch (error) {
			event.locals.logger.error('Could not persist the post', { error });
			return fail(500, {
				id: 'form_create_post',
				reason: 'unexpected'
			});
		}
	}
} satisfies Actions;

Learn more about Webstone Plugins

This plugin is part of a wider ecosystem called Webstone Plugins.

0.2.0

9 months ago

0.1.0

9 months ago