Skip to content

Commit 7942936

Browse files
fix: spread tail messages when logging (#723)
1 parent f12335a commit 7942936

File tree

4 files changed

+58
-2
lines changed

4 files changed

+58
-2
lines changed

.changeset/chilly-bears-invent.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"wrangler": patch
3+
---
4+
5+
fix: spread tail messages when logging
6+
7+
Logged messages (via console, etc) would previously be logged as an array of values. This spreads it when logging to match what is expected.

packages/wrangler/src/__tests__/tail.test.ts

+49
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,55 @@ describe("tail", () => {
293293
`);
294294
});
295295

296+
it("logs console messages and exceptions", async () => {
297+
const api = mockWebsocketAPIs();
298+
await runWrangler("tail test-worker");
299+
300+
const event = generateMockRequestEvent();
301+
const message = generateMockEventMessage({
302+
event,
303+
logs: [
304+
{ message: ["some string"], level: "log", timestamp: 1234561 },
305+
{
306+
message: [{ complex: "object" }],
307+
level: "log",
308+
timestamp: 1234562,
309+
},
310+
{ message: [1234], level: "error", timestamp: 1234563 },
311+
],
312+
exceptions: [
313+
{ name: "Error", message: "some error", timestamp: 1234564 },
314+
{ name: "Error", message: { complex: "error" }, timestamp: 1234564 },
315+
],
316+
});
317+
const serializedMessage = serialize(message);
318+
319+
api.ws.send(serializedMessage);
320+
expect(
321+
std.out
322+
.replace(
323+
new Date(mockEventTimestamp).toLocaleString(),
324+
"[mock event timestamp]"
325+
)
326+
.replace(
327+
mockTailExpiration.toLocaleString(),
328+
"[mock expiration date]"
329+
)
330+
).toMatchInlineSnapshot(`
331+
"successfully created tail, expires at [mock expiration date]
332+
Connected to test-worker, waiting for logs...
333+
GET https://example.org/ - Ok @ [mock event timestamp]
334+
(log) some string
335+
(log) { complex: 'object' }
336+
(error) 1234"
337+
`);
338+
expect(std.err).toMatchInlineSnapshot(`
339+
" Error: some error
340+
Error: { complex: 'error' }"
341+
`);
342+
expect(std.warn).toMatchInlineSnapshot(`""`);
343+
});
344+
296345
it("logs scheduled messages in pretty format", async () => {
297346
const api = mockWebsocketAPIs();
298347
await runWrangler("tail test-worker --format pretty");

packages/wrangler/src/tail/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ export type TailEventMessage = {
161161
* Any logs sent out by the worker
162162
*/
163163
logs: {
164-
message: unknown;
164+
message: unknown[];
165165
level: string; // TODO: make this a union of possible values
166166
timestamp: number;
167167
}[];

packages/wrangler/src/tail/printing.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function prettyPrintLogs(data: WebSocket.RawData): void {
2424

2525
if (eventMessage.logs.length > 0) {
2626
eventMessage.logs.forEach(({ level, message }) => {
27-
console.log(` (${level})`, message);
27+
console.log(` (${level})`, ...message);
2828
});
2929
}
3030

0 commit comments

Comments
 (0)