31 lines
956 B
TypeScript
31 lines
956 B
TypeScript
import { createWriteStream, type WriteStream } from 'fs'
|
|
import { paths } from './paths'
|
|
|
|
/**
|
|
* Journalisation sur disque du launcher (logs/launcher.log).
|
|
*
|
|
* Capture tout ce qui transite par `events.ts` (sortie jeu + packwiz + messages
|
|
* de phase + erreurs), pour pouvoir dépanner un joueur à distance. Le fichier
|
|
* est tronqué au début de chaque session "Jouer".
|
|
*/
|
|
|
|
let stream: WriteStream | null = null
|
|
|
|
function ts(): string {
|
|
return new Date().toISOString()
|
|
}
|
|
|
|
/** Ouvre (en tronquant) un nouveau fichier de log et écrit un en-tête. */
|
|
export function startSession(): void {
|
|
stream?.end()
|
|
stream = createWriteStream(paths.launcherLogFile, { flags: 'w' })
|
|
stream.write(`=== Session OFLauncher ${ts()} ===\n`)
|
|
}
|
|
|
|
/** Ajoute une ligne au log courant (no-op si aucune session ouverte). */
|
|
export function write(line: string): void {
|
|
if (!stream) return
|
|
const text = line.endsWith('\n') ? line : `${line}\n`
|
|
stream.write(text)
|
|
}
|