init DailyFile Logger
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user