Skip to content

Commit 081dd78

Browse files
committed
Improved logging of error responses from fractal-server in SSR
1 parent 828489b commit 081dd78

File tree

11 files changed

+50
-27
lines changed

11 files changed

+50
-27
lines changed

src/hooks.server.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { env } from '$env/dynamic/private';
2+
import { formatDate, getLogger } from '$lib/server/logger.js';
23
import { getServerInfo } from '$lib/server/api/alive';
34
import { getCurrentUser } from '$lib/server/api/auth_api';
4-
import { getLogger } from '$lib/server/logger.js';
55
import { error, redirect } from '@sveltejs/kit';
66

77
const logger = getLogger('hooks');
@@ -113,7 +113,17 @@ export async function handleFetch({ event, request, fetch }) {
113113
request.headers.set('cookie', cookie);
114114
}
115115
}
116-
return fetch(request);
116+
const startTime = new Date();
117+
const response = await fetch(request);
118+
if (!response.ok) {
119+
logger.error(
120+
'Error response from %s - Status=%d - Start Time=%s',
121+
request.url,
122+
response.status,
123+
formatDate(startTime)
124+
);
125+
}
126+
return response;
117127
}
118128

119129
/**

src/lib/common/errors.js

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,7 @@
1-
import { error } from '@sveltejs/kit';
21
import StandardErrorAlert from '$lib/components/common/StandardErrorAlert.svelte';
32
import { writable } from 'svelte/store';
43
import { mount } from 'svelte';
54

6-
/**
7-
* Propagates an error response.
8-
* @param {Response} response
9-
*/
10-
export async function responseError(response) {
11-
let errorResponse = await response.json();
12-
if ('detail' in errorResponse) {
13-
errorResponse = errorResponse.detail;
14-
}
15-
error(response.status, errorResponse);
16-
}
17-
185
/**
196
* @param {Response} response
207
*/

src/lib/common/errors.server.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { getLogger } from '$lib/server/logger';
2+
import { error } from '@sveltejs/kit';
3+
4+
const logger = getLogger('errors');
5+
6+
/**
7+
* Propagates an error response.
8+
* @param {Response} response
9+
*/
10+
export async function responseError(response) {
11+
let errorResponse;
12+
if (response.status === 500) {
13+
errorResponse = response.statusText;
14+
} else {
15+
errorResponse = await response.json();
16+
logger.debug('Error response body: %s', errorResponse);
17+
if ('detail' in errorResponse) {
18+
errorResponse = errorResponse.detail;
19+
}
20+
}
21+
error(response.status, errorResponse);
22+
}

src/lib/server/api/auth_api.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { env } from '$env/dynamic/private';
2-
import { responseError } from '$lib/common/errors';
2+
import { responseError } from '$lib/common/errors.server';
33
import { getLogger } from '$lib/server/logger.js';
44

55
const logger = getLogger('auth API');

src/lib/server/api/v2/admin_api.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { env } from '$env/dynamic/private';
2-
import { responseError } from '$lib/common/errors';
2+
import { responseError } from '$lib/common/errors.server';
33
import { getLogger } from '$lib/server/logger.js';
44

55
const logger = getLogger('admin API [v2]');

src/lib/server/api/v2/dataset_api.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { env } from '$env/dynamic/private';
2-
import { responseError } from '$lib/common/errors';
2+
import { responseError } from '$lib/common/errors.server';
33
import { getLogger } from '$lib/server/logger.js';
44
import { normalizePayload } from 'fractal-components';
55

src/lib/server/api/v2/project_api.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { env } from '$env/dynamic/private';
2-
import { responseError } from '$lib/common/errors';
2+
import { responseError } from '$lib/common/errors.server';
33
import { getLogger } from '$lib/server/logger.js';
44

55
const logger = getLogger('projects API [v2]');

src/lib/server/api/v2/settings_api.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { env } from '$env/dynamic/private';
2-
import { responseError } from '$lib/common/errors';
2+
import { responseError } from '$lib/common/errors.server';
33
import { getLogger } from '$lib/server/logger.js';
44

55
const logger = getLogger('settings API');

src/lib/server/api/v2/task_api.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { env } from '$env/dynamic/private';
2-
import { responseError } from '$lib/common/errors.js';
2+
import { responseError } from '$lib/common/errors.server';
33
import { getLogger } from '$lib/server/logger.js';
44

55
const logger = getLogger('task API [v2]');

src/lib/server/api/v2/workflow_api.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { env } from '$env/dynamic/private';
2-
import { responseError } from '$lib/common/errors';
2+
import { responseError } from '$lib/common/errors.server';
33
import { getLogger } from '$lib/server/logger.js';
44

55
const logger = getLogger('workflow API [v2]');

0 commit comments

Comments
 (0)