mirror of
https://github.com/Xevion/xevion.dev.git
synced 2026-01-31 12:26:39 -06:00
fix: use proper standard $pageview event for posthog, enable exception tracking
This commit is contained in:
+5
-10
@@ -1,15 +1,10 @@
|
||||
import type { HandleClientError } from "@sveltejs/kit";
|
||||
import { telemetry } from "$lib/telemetry";
|
||||
import posthog from "posthog-js";
|
||||
|
||||
export const handleError: HandleClientError = ({ error, status, message }) => {
|
||||
telemetry.trackError(
|
||||
status >= 500 ? "runtime_error" : "network_error",
|
||||
message,
|
||||
{
|
||||
stack: error instanceof Error ? error.stack : undefined,
|
||||
context: { status },
|
||||
},
|
||||
);
|
||||
export const handleError: HandleClientError = ({ error, status }) => {
|
||||
if (status !== 404) {
|
||||
posthog.captureException(error);
|
||||
}
|
||||
|
||||
return {
|
||||
message: status === 404 ? "Not Found" : "An error occurred",
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
import type { Handle, HandleServerError } from "@sveltejs/kit";
|
||||
import { dev } from "$app/environment";
|
||||
import { env } from "$env/dynamic/private";
|
||||
import { initLogger } from "$lib/logger";
|
||||
import { requestContext } from "$lib/server/context";
|
||||
import { preCacheCollections } from "$lib/server/icons";
|
||||
import { getLogger } from "@logtape/logtape";
|
||||
import { minify } from "html-minifier-terser";
|
||||
import { PostHog } from "posthog-node";
|
||||
|
||||
await initLogger();
|
||||
|
||||
// Initialize PostHog for server-side error tracking
|
||||
const posthog =
|
||||
env.POSTHOG_KEY && env.POSTHOG_HOST
|
||||
? new PostHog(env.POSTHOG_KEY, { host: env.POSTHOG_HOST })
|
||||
: null;
|
||||
|
||||
// Pre-cache icon collections before handling any requests
|
||||
await preCacheCollections();
|
||||
|
||||
@@ -75,6 +83,15 @@ export const handleError: HandleServerError = async ({
|
||||
error: error instanceof Error ? error.message : String(error),
|
||||
});
|
||||
|
||||
if (posthog && status !== 404) {
|
||||
const requestId = event.request.headers.get("x-request-id") ?? "unknown";
|
||||
posthog.captureException(error, requestId, {
|
||||
method: event.request.method,
|
||||
path: event.url.pathname,
|
||||
status,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
message: status === 404 ? "Not Found" : "Internal Error",
|
||||
};
|
||||
|
||||
@@ -83,10 +83,11 @@ class TelemetryClient {
|
||||
|
||||
/**
|
||||
* Convenience method for tracking page views
|
||||
* Uses PostHog's standard $pageview event for Web Analytics compatibility
|
||||
*/
|
||||
trackPageView(route: string): void {
|
||||
this.track({
|
||||
name: "page_view",
|
||||
name: "$pageview",
|
||||
properties: {
|
||||
route,
|
||||
referrer: browser ? document.referrer : undefined,
|
||||
|
||||
@@ -5,9 +5,10 @@
|
||||
|
||||
/**
|
||||
* Page view tracking event
|
||||
* Uses PostHog's standard $pageview event name for Web Analytics compatibility
|
||||
*/
|
||||
export type PageViewEvent = {
|
||||
name: "page_view";
|
||||
name: "$pageview";
|
||||
properties: {
|
||||
route: string;
|
||||
referrer?: string;
|
||||
|
||||
Reference in New Issue
Block a user