feat: add structured pino logging and validated log-level config
This commit is contained in:
@@ -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;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user