import logger, {Level, Writer, type WriterOptions} from 'log' import {File} from 'logger-file' export * as log from 'log' export default logger export class DailyFile extends Writer { private writer: File private readonly folder: string private current_date: Date = new Date() public constructor(options: WriterOptions & {folder: string}) { const {folder, ...rest} = options super(rest) this.folder = folder this.writer = DailyFile.start(this.options, this.folder, this.current_date) } private static start(options: WriterOptions, folder: string, now: Date) : File { const date = now.toISOString().split('T')[0] const path = `${folder}/${date}.log` return new File({...options, path}) } protected write(level: Level, ...data: any[]): void { if (new Date().getDay() !== this.current_date.getDay()) { this.current_date = new Date() this.writer.end() this.writer = DailyFile.start(this.options, this.folder, this.current_date) } return this.writer.log(level, data) } public end() : number | Promise { return this.writer.end() } }