# 
        Cloudflare Pages
    
Cloudflare Pages is Cloudflare's app development platform. Baselime enabled your to capture the server-side logs of your applications deployed on Cloudflare pages.
You can setup logs for Cloudflare Pages Functions in 4 steps.
Step 1: Install the @baselime/edge-logger package.
npm i -S @baselime/edge-loggerStep 2: Add the logger to your server-side code in the functions directory
import { BaselimeLogger } from "@baselime/edge-logger"
export function onRequest(context) {
  const  url = new URL(context.request.url);
  const logger = new BaselimeLogger({
    service: "your-service-name",
    namespace: `${context.request.method} ${url.hostname}${url.pathname}`,
    apiKey: context.env.BASELIME_API_KEY,
    ctx: context,
    isLocalDev: context.env.IS_LOCAL
  });
  logger.info("Hello from the serverless world!", { data: { userId: 'random-id' } });
  context.waitUntil(logger.flush());
  return new Response(JSON.stringify({
    message: "Hello from the serverless world!"
  }));
} Remember to call logger.flush(), otherwise the execution will terminate before logs are forwarded to Baselime.
Step 3: Add the BASELIME_API_KEY environment variable to your Cloudflare pages settings and deploy your application
Get your public BASELIME_API_KEY from the Baselime Console
 
    
Step 4: View your logs in the Baselime Console
        # 
        Special cases
    
There are special cases for instrumenting applications on Cloudflare Pages depending on the web framework.
        # 
        SvelteKit
    
Additional steps are necessary to instrument applications developed with SvelteKit.
Step 1: Update the build and deploy scripts in your project package.json
{
  "name": "my-svelte-app",
  "scripts": {
    ...
  	"build": "CF_PAGES=1 vite build",
    "deploy": "npm run build && wrangler pages deploy .svelte-kit/cloudflare",
    ...
  },
  ...
}    Step 2: Add the Baselime logger to your hook.server.js file
import { BaselimeLogger } from "@baselime/edge-logger";
export const handle = async ({ event, resolve }: { event: any, resolve: any}) => {
  const baselimeApiKey = String(event.platform?.env?.BASELIME_API_KEY);
  const context = event.platform?.context || { waitUntil: () => {}, passThroughOnException: () => {} }
  const  url = new URL(request.url);
  const logger = new BaselimeLogger({
    service: 'your-service-name',
    namespace: `${request.method} ${url.hostname}${url.pathname}`,
    apiKey: baselimeApiKey,
    isLocalDev: event.platform ? false : true,
    ctx: context
  });
  
  event.logger = logger;
  const result = await resolve(event);
  context.waitUntil(logger.flush());
  return result;
};Step 3: Access the Baselime logger in the server-side code
import type { BaselimeLogger } from '@baselime/edge-logger';
export async function load({ logger }) {
  logger.info("Hello from page.server.ts")
  return {
    data: Math.random(),
    message: "hello"
  };
}