31 lines
797 B
TypeScript
31 lines
797 B
TypeScript
import logger, {Level, type Writer, type WriterOptions} from 'log'
|
|
import {type FileSink, file} from 'bun'
|
|
import os from 'os'
|
|
|
|
export * as log from 'log'
|
|
export default logger
|
|
|
|
export class File implements Writer {
|
|
private readonly sink: FileSink;
|
|
readonly _options: WriterOptions;
|
|
|
|
public constructor(options: WriterOptions & { path: string }) {
|
|
const {path, ...rest} = options
|
|
this._options = rest
|
|
this.sink = file(path).writer({ highWaterMark: 128 * 1024 })
|
|
}
|
|
|
|
public log(_level: Level, ...data: any[]) : void {
|
|
this.sink.write(data.join(" "))
|
|
this.sink.write(os.EOL)
|
|
}
|
|
|
|
public end() : number | Promise<number> {
|
|
return this.sink.end()
|
|
}
|
|
|
|
get options() : WriterOptions {
|
|
return this._options;
|
|
}
|
|
}
|