feat: add structured pino logging and validated log-level config

This commit is contained in:
Codex
2026-02-18 13:16:35 +00:00
parent 6b1f9cddbc
commit e3f9a3574e
6 changed files with 74 additions and 8 deletions

View File

@@ -4,6 +4,7 @@ const http = require("node:http");
const { buildApp } = require("./app");
const { config } = require("./config");
const { JsonFileStateStore } = require("./lib/state-store");
const { createLogger } = require("./lib/logger");
function readBody(req) {
return new Promise((resolve, reject) => {
@@ -68,7 +69,7 @@ function createMutationPersister({ stateStore, logger = console }) {
queue = queue
.then(() => stateStore.save(state))
.catch((error) => {
logger.error("failed to persist state", error);
logger.error({ err: error }, "failed to persist state");
});
return queue;
@@ -87,6 +88,7 @@ async function createRuntime({ runtimeConfig = config, logger = console } = {})
const app = buildApp({
config: runtimeConfig,
initialState,
logger,
onMutation(state) {
void persister.enqueue(state);
},
@@ -102,7 +104,11 @@ async function createRuntime({ runtimeConfig = config, logger = console } = {})
}
async function start() {
const runtime = await createRuntime({ runtimeConfig: config });
const logger = createLogger({
level: config.logLevel,
name: "xartaudio",
});
const runtime = await createRuntime({ runtimeConfig: config, logger });
const { server, persister } = runtime;
let shuttingDown = false;
@@ -112,7 +118,7 @@ async function start() {
}
shuttingDown = true;
console.log(`received ${signal}, shutting down`);
logger.info({ signal }, "received shutdown signal");
server.close();
await persister.flush();
@@ -126,13 +132,17 @@ async function start() {
});
server.listen(config.port, () => {
console.log(`xartaudio server listening on :${config.port}`);
logger.info({ port: config.port }, "xartaudio server listening");
});
}
if (require.main === module) {
start().catch((error) => {
console.error("failed to start server", error);
const logger = createLogger({
level: config.logLevel,
name: "xartaudio",
});
logger.error({ err: error }, "failed to start server");
process.exitCode = 1;
});
}