0.3.4 • Published 9 months ago

webstone-plugin-request-logger v0.3.4

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

request-logger Webstone Plugin

About

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

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';

/** @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;

Feedback / bugs / ideas

If you have any feedback, run into bugs, or have ideas on how to improve thie plugin, please open a GitHub issue.

Learn more about Webstone Plugins

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

0.3.4

9 months ago

0.3.3

9 months ago

0.3.2

9 months ago

0.3.1

9 months ago

0.3.0

9 months ago

0.2.0

9 months ago

0.1.0

9 months ago