// 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 { private id: string; private 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); } private prefix(): string { return `${this.queueType} job queue, job ID ${this.id}, attempt ${this.attempt}:`; } }