feat: 首次推送到Gitea - 完整项目代码 + 安全加固 + 知识库
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
// Structured JSON logger with traceId support
|
||||
import { randomUUID } from "crypto";
|
||||
|
||||
const LOG_LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
|
||||
const CURRENT_LEVEL = LOG_LEVELS[process.env.LOG_LEVEL || "info"] ?? LOG_LEVELS.info;
|
||||
|
||||
function formatLog(level, message, data = {}) {
|
||||
const entry = {
|
||||
ts: new Date().toISOString(),
|
||||
level,
|
||||
msg: message,
|
||||
...data,
|
||||
};
|
||||
if (!entry.traceId) {
|
||||
entry.traceId = randomUUID().slice(0, 8);
|
||||
}
|
||||
return JSON.stringify(entry);
|
||||
}
|
||||
|
||||
function createLogger(module) {
|
||||
function log(level, message, data = {}) {
|
||||
if (LOG_LEVELS[level] < CURRENT_LEVEL) return;
|
||||
const line = formatLog(level, message, { module, ...data });
|
||||
if (level === "error") {
|
||||
console.error(line);
|
||||
} else if (level === "warn") {
|
||||
console.warn(line);
|
||||
} else {
|
||||
console.log(line);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
debug: (msg, data) => log("debug", msg, data),
|
||||
info: (msg, data) => log("info", msg, data),
|
||||
warn: (msg, data) => log("warn", msg, data),
|
||||
error: (msg, data) => log("error", msg, data),
|
||||
child: (extra) => createLogger(`${module}:${extra.sub || "child"}`),
|
||||
};
|
||||
}
|
||||
|
||||
export { createLogger };
|
||||
Reference in New Issue
Block a user