import * as plugins from './plugins.js'; export class SmartlogDestinationFile implements plugins.smartlogInterfaces.ILogDestination { public fileWriteStream: plugins.fs.WriteStream; public async handleLog(logPackageArg: plugins.smartlogInterfaces.ILogPackage) { this.fileWriteStream.write(`${new plugins.smarttime.ExtendedDate(Date.now()).toISOString()}: ${logPackageArg.message} \n`); } constructor(filePathArg: string) { const extendedDate = new plugins.smarttime.ExtendedDate(Date.now()); if (!plugins.path.isAbsolute(filePathArg)) { throw new Error(`filePath needs to be absolute but is not: "${filePathArg}"`); } if (!plugins.fs.existsSync(filePathArg)) { plugins.fs.mkdirSync(plugins.path.dirname(filePathArg), { recursive: true }); plugins.fs.writeFileSync(filePathArg, `# Smartlogfile. Created at ${extendedDate.toISOString()}\n`); } this.fileWriteStream = plugins.fs.createWriteStream( filePathArg, { flags: 'a+', } ); } }