// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import type { LoggerType } from '../types/Logging'; import type { ParsedJob } from './types'; export class JobLogger implements LoggerType { #id: string; #queueType: string; public attempt = -1; constructor( job: Readonly, 'id' | 'queueType'>>, private logger: LoggerType ) { this.#id = job.id; this.#queueType = job.queueType; } fatal(...args: ReadonlyArray): void { this.logger.fatal(this.#prefix(), ...args); } error(...args: ReadonlyArray): void { this.logger.error(this.#prefix(), ...args); } warn(...args: ReadonlyArray): void { this.logger.warn(this.#prefix(), ...args); } info(...args: ReadonlyArray): void { this.logger.info(this.#prefix(), ...args); } debug(...args: ReadonlyArray): void { this.logger.debug(this.#prefix(), ...args); } trace(...args: ReadonlyArray): void { this.logger.trace(this.#prefix(), ...args); } #prefix(): string { return `${this.#queueType} job queue, job ID ${this.#id}, attempt ${this.attempt}:`; } }