1
0

feat: 运行时日志系统,Pino + pino-pretty + pino-roll,console/file 双输出,敏感信息 redaction

This commit is contained in:
2026-05-21 12:21:59 +08:00
parent 0d709c7681
commit 007d74934d
26 changed files with 1713 additions and 114 deletions

View File

@@ -7,6 +7,7 @@ import type { ProbeStore } from "../../src/server/checker/store";
import type { ResolvedTargetBase } from "../../src/server/checker/types";
import { bootstrap, type BootstrapDependencies } from "../../src/server/bootstrap";
import { createNoopLogger } from "../../src/server/logger";
type ShutdownSignal = "SIGINT" | "SIGTERM";
@@ -27,6 +28,15 @@ function createHarness(overrides: BootstrapDependencies = {}) {
configDir: "/tmp",
dataDir: "/tmp/dial-data",
host: "127.0.0.1",
logging: {
consoleLevel: "info",
fileLevel: "info",
filePath: "/tmp/dial-data/logs/dial.log",
rotationFrequency: "daily",
rotationMaxFiles: 14,
rotationSizeBytes: 52428800,
rotationSizeRaw: "50MB",
},
maxConcurrentChecks: 3,
port: 3000,
retentionMs: 1000,
@@ -49,12 +59,19 @@ function createHarness(overrides: BootstrapDependencies = {}) {
},
} as unknown as ProbeEngine;
const noopLogger = createNoopLogger();
const dependencies: BootstrapDependencies = {
createEngine(actualStore, targets, maxConcurrentChecks, retentionMs) {
createEngine(actualStore, targets, maxConcurrentChecks, retentionMs, logger) {
expect(actualStore).toBe(store);
expect(logger).toBe(noopLogger);
calls.push(`createEngine:${targets.length}:${maxConcurrentChecks}:${retentionMs}`);
return engine;
},
createLogger() {
calls.push("createLogger");
return Promise.resolve(noopLogger);
},
createStore(dbPath) {
calls.push(`createStore:${dbPath}`);
return store;
@@ -83,7 +100,7 @@ function createHarness(overrides: BootstrapDependencies = {}) {
...overrides,
};
return { calls, dependencies, shutdownHandlers };
return { calls, dependencies, noopLogger, shutdownHandlers };
}
describe("bootstrap", () => {
@@ -94,6 +111,7 @@ describe("bootstrap", () => {
expect(calls).toEqual([
"loadConfig:/tmp/probes.yaml",
"createLogger",
`createStore:${join("/tmp/dial-data", "probe.db")}`,
"syncTargets:1",
"createEngine:1:3:1000",