init DailyFile Logger

This commit is contained in:
2024-05-14 23:31:05 +02:00
commit a3d19c00d4
4 changed files with 99 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
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<number> {
return this.writer.end()
}
}