Signal-Desktop/ts/jobs/JobLogger.ts

50 lines
1.2 KiB
TypeScript

// 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<Pick<ParsedJob<unknown>, 'id' | 'queueType'>>,
private logger: LoggerType
) {
this.id = job.id;
this.queueType = job.queueType;
}
fatal(...args: ReadonlyArray<unknown>): void {
this.logger.fatal(this.prefix(), ...args);
}
error(...args: ReadonlyArray<unknown>): void {
this.logger.error(this.prefix(), ...args);
}
warn(...args: ReadonlyArray<unknown>): void {
this.logger.warn(this.prefix(), ...args);
}
info(...args: ReadonlyArray<unknown>): void {
this.logger.info(this.prefix(), ...args);
}
debug(...args: ReadonlyArray<unknown>): void {
this.logger.debug(this.prefix(), ...args);
}
trace(...args: ReadonlyArray<unknown>): void {
this.logger.trace(this.prefix(), ...args);
}
private prefix(): string {
return `${this.queueType} job queue, job ID ${this.id}, attempt ${this.attempt}:`;
}
}