Skip to content
Merged
5 changes: 5 additions & 0 deletions .changeset/proud-yaks-thank.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@trigger.dev/core": patch
---

Improvements to structured logger and conditional payload logging
6 changes: 3 additions & 3 deletions apps/coordinator/src/checkpointer.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { ExponentialBackoff } from "@trigger.dev/core/v3/apps";
import { testDockerCheckpoint } from "@trigger.dev/core/v3/apps";
import { SimpleLogger } from "@trigger.dev/core/v3/apps";
import { nanoid } from "nanoid";
import fs from "node:fs/promises";
import { ChaosMonkey } from "./chaosMonkey";
import { Buildah, Crictl, Exec } from "./exec";
import { setTimeout } from "node:timers/promises";
import { TempFileCleaner } from "./cleaner";
import { numFromEnv, boolFromEnv } from "./util";
import { SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger";

type CheckpointerInitializeReturn = {
canCheckpoint: boolean;
Expand Down Expand Up @@ -86,7 +86,7 @@ export class Checkpointer {
#canCheckpoint = false;
#dockerMode: boolean;

#logger = new SimpleLogger("[checkptr]");
#logger = new SimpleStructuredLogger("checkpointer");
#abortControllers = new Map<string, AbortController>();
#failedCheckpoints = new Map<string, unknown>();
#waitingForRetry = new Set<string>();
Expand Down Expand Up @@ -137,7 +137,7 @@ export class Checkpointer {
return this.#getInitReturn(true);
}

this.#logger.error(testCheckpoint.message, testCheckpoint.error ?? "");
this.#logger.error(testCheckpoint.message, { error: testCheckpoint.error });
return this.#getInitReturn(false);
}

Expand Down
20 changes: 12 additions & 8 deletions apps/coordinator/src/cleaner.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { SimpleLogger } from "@trigger.dev/core/v3/apps";
import { SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger";
import { Exec } from "./exec";
import { setTimeout } from "timers/promises";

Expand All @@ -10,14 +10,18 @@ interface TempFileCleanerOptions {
}

export class TempFileCleaner {
private logger = new SimpleLogger("[tmp-cleaner]");
private enabled = false;
private exec = new Exec({ logger: this.logger });

constructor(private opts: TempFileCleanerOptions) {}
private logger: SimpleStructuredLogger;
private exec: Exec;

constructor(private opts: TempFileCleanerOptions) {
this.logger = new SimpleStructuredLogger("tmp-cleaner", undefined, { ...this.opts });
this.exec = new Exec({ logger: this.logger });
}

async start() {
this.logger.log("start", this.opts);
this.logger.log("TempFileCleaner.start");
this.enabled = true;

if (!this.opts.leadingEdge) {
Expand All @@ -28,15 +32,15 @@ export class TempFileCleaner {
try {
await this.clean();
} catch (error) {
this.logger.error("error during tick", error);
this.logger.error("error during tick", { error });
}

await this.wait();
}
}

stop() {
this.logger.log("stop", this.opts);
this.logger.log("TempFileCleaner.stop");
this.enabled = false;
}

Expand Down Expand Up @@ -89,7 +93,7 @@ export class TempFileCleaner {
const rmOutput = await rm;

if (rmOutput.stderr.length > 0) {
this.logger.error("delete unsuccessful", rmOutput);
this.logger.error("delete unsuccessful", { rmOutput });
return;
}

Expand Down
16 changes: 8 additions & 8 deletions apps/coordinator/src/exec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { SimpleLogger } from "@trigger.dev/core/v3/apps";
import { SimpleStructuredLogger } from "@trigger.dev/core/v3/utils/structuredLogger";
import { randomUUID } from "crypto";
import { homedir } from "os";
import { type Result, x } from "tinyexec";
Expand All @@ -18,23 +18,23 @@ class TinyResult {
}

interface ExecOptions {
logger?: SimpleLogger;
logger?: SimpleStructuredLogger;
abortSignal?: AbortSignal;
logOutput?: boolean;
trimArgs?: boolean;
neverThrow?: boolean;
}

export class Exec {
private logger: SimpleLogger;
private logger: SimpleStructuredLogger;
private abortSignal: AbortSignal | undefined;

private logOutput: boolean;
private trimArgs: boolean;
private neverThrow: boolean;

constructor(opts: ExecOptions) {
this.logger = opts.logger ?? new SimpleLogger();
this.logger = opts.logger ?? new SimpleStructuredLogger("exec");
this.abortSignal = opts.abortSignal;

this.logOutput = opts.logOutput ?? true;
Expand Down Expand Up @@ -103,15 +103,15 @@ interface BuildahOptions {

export class Buildah {
private id: string;
private logger: SimpleLogger;
private logger: SimpleStructuredLogger;
private exec: Exec;

private containers = new Set<string>();
private images = new Set<string>();

constructor(opts: BuildahOptions) {
this.id = opts.id ?? randomUUID();
this.logger = new SimpleLogger(`[buildah][${this.id}]`);
this.logger = new SimpleStructuredLogger("buildah", undefined, { id: this.id });

this.exec = new Exec({
logger: this.logger,
Expand Down Expand Up @@ -220,14 +220,14 @@ interface CrictlOptions {

export class Crictl {
private id: string;
private logger: SimpleLogger;
private logger: SimpleStructuredLogger;
private exec: Exec;

private archives = new Set<string>();

constructor(opts: CrictlOptions) {
this.id = opts.id ?? randomUUID();
this.logger = new SimpleLogger(`[crictl][${this.id}]`);
this.logger = new SimpleStructuredLogger("crictl", undefined, { id: this.id });

this.exec = new Exec({
logger: this.logger,
Expand Down
Loading
Loading