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

@@ -7,11 +7,13 @@ test("config uses defaults when env is missing", () => {
const previous = {
PORT: process.env.PORT,
STATE_FILE_PATH: process.env.STATE_FILE_PATH,
LOG_LEVEL: process.env.LOG_LEVEL,
WEBHOOK_RPM: process.env.WEBHOOK_RPM,
};
delete process.env.PORT;
delete process.env.STATE_FILE_PATH;
delete process.env.LOG_LEVEL;
delete process.env.WEBHOOK_RPM;
delete require.cache[require.resolve("../src/config")];
@@ -19,6 +21,7 @@ test("config uses defaults when env is missing", () => {
assert.equal(config.port, 3000);
assert.equal(config.stateFilePath, "./data/state.json");
assert.equal(config.logLevel, "info");
assert.equal(config.rateLimits.webhookPerMinute, 120);
if (previous.PORT === undefined) {
@@ -33,6 +36,12 @@ test("config uses defaults when env is missing", () => {
process.env.STATE_FILE_PATH = previous.STATE_FILE_PATH;
}
if (previous.LOG_LEVEL === undefined) {
delete process.env.LOG_LEVEL;
} else {
process.env.LOG_LEVEL = previous.LOG_LEVEL;
}
if (previous.WEBHOOK_RPM === undefined) {
delete process.env.WEBHOOK_RPM;
} else {
@@ -44,11 +53,13 @@ test("config reads state path and numeric env overrides", () => {
const previous = {
PORT: process.env.PORT,
STATE_FILE_PATH: process.env.STATE_FILE_PATH,
LOG_LEVEL: process.env.LOG_LEVEL,
WEBHOOK_RPM: process.env.WEBHOOK_RPM,
};
process.env.PORT = "8080";
process.env.STATE_FILE_PATH = "/data/prod-state.json";
process.env.LOG_LEVEL = "debug";
process.env.WEBHOOK_RPM = "77";
delete require.cache[require.resolve("../src/config")];
@@ -56,6 +67,7 @@ test("config reads state path and numeric env overrides", () => {
assert.equal(config.port, 8080);
assert.equal(config.stateFilePath, "/data/prod-state.json");
assert.equal(config.logLevel, "debug");
assert.equal(config.rateLimits.webhookPerMinute, 77);
if (previous.PORT === undefined) {
@@ -69,6 +81,11 @@ test("config reads state path and numeric env overrides", () => {
} else {
process.env.STATE_FILE_PATH = previous.STATE_FILE_PATH;
}
if (previous.LOG_LEVEL === undefined) {
delete process.env.LOG_LEVEL;
} else {
process.env.LOG_LEVEL = previous.LOG_LEVEL;
}
if (previous.WEBHOOK_RPM === undefined) {
delete process.env.WEBHOOK_RPM;
} else {