@push.rocks/smartlog
Version:
A minimalistic, distributed, and extensible logging tool supporting centralized log management.
292 lines (268 loc) • 9.68 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
// node_modules/.pnpm/@push.rocks+isounique@1.0.5/node_modules/@push.rocks/isounique/dist_ts/index.js
var require_dist_ts = __commonJS({
"node_modules/.pnpm/@push.rocks+isounique@1.0.5/node_modules/@push.rocks/isounique/dist_ts/index.js"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.uni = void 0;
var uni = (prefix = "uni") => {
return `${prefix}_${`xxxxxxxxxxxxxxxxxxxxxxxx`.replace(/[xy]/g, (c) => {
const r = Math.random() * 16 | 0;
const v = c === "x" ? r : r & 3 | 8;
return v.toString(16);
})}`;
};
exports.uni = uni;
}
});
// dist_ts_interfaces/index.js
var dist_ts_interfaces_exports = {};
__export(dist_ts_interfaces_exports, {
request: () => smartlog_interfaces_requests_exports
});
// node_modules/.pnpm/@api.global+typedrequest-interfaces@3.0.19/node_modules/@api.global/typedrequest-interfaces/dist_ts/index.js
var dist_ts_exports = {};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/index.js
var dist_ts_exports2 = {};
__export(dist_ts_exports2, {
business: () => business_exports,
code: () => code_exports,
container: () => container_exports,
content: () => content_exports,
database: () => database_exports,
descriptors: () => descriptors_exports,
finance: () => finance_exports,
general: () => general_exports,
network: () => network_exports,
saas: () => saas_exports,
storage: () => storage_exports,
website: () => website_exports
});
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/business/index.js
var business_exports = {};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/database/index.js
var database_exports = {};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/finance/index.js
var finance_exports = {};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/code/index.js
var code_exports = {};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/container/index.js
var container_exports = {};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/descriptors/index.js
var descriptors_exports = {};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/content/index.js
var content_exports = {};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/general/index.js
var general_exports = {};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/network/index.js
var network_exports = {};
__export(network_exports, {
ICnameDescriptor: () => ICnameDescriptor
});
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/network/cname.js
var ICnameDescriptor = class {
};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/saas/index.js
var saas_exports = {};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/storage/index.js
var storage_exports = {};
// node_modules/.pnpm/@tsclass+tsclass@9.2.0/node_modules/@tsclass/tsclass/dist_ts/website/index.js
var website_exports = {};
// dist_ts_interfaces/smartlog-interfaces.requests.js
var smartlog_interfaces_requests_exports = {};
// ts/smartlog.plugins.ts
var isounique = __toESM(require_dist_ts(), 1);
// ts/smartlog.classes.consolelog.ts
var ConsoleLog = class {
log(logLevelArg, logMessageArg, dataArg, correlationArg) {
console.log(`__# ${logLevelArg}: ${logMessageArg}`);
}
};
// ts/smartlog.classes.logrouter.ts
var LogRouter = class {
constructor() {
/**
* all log destinations
*/
this.logDestinations = [];
}
addLogDestination(logDestination) {
this.logDestinations.push(logDestination);
}
// routes the log according to added logDestinations
async routeLog(logPackageArg) {
for (const logDestination of this.logDestinations) {
await logDestination.handleLog(logPackageArg);
}
}
};
// ts/smartlog.classes.smartlog.ts
var Smartlog = class _Smartlog {
constructor(optionsArg) {
this.uniInstanceId = isounique.uni();
this.logRouter = new LogRouter();
this.logContext = optionsArg.logContext;
this.minimumLogLevel = optionsArg.minimumLogLevel || "silly";
}
// STATIC
static createForCommitinfo(commitinfo) {
return new _Smartlog({
logContext: {
commitinfo
}
});
}
addLogDestination(logDestinationArg) {
this.logRouter.addLogDestination(logDestinationArg);
}
// ============
// Logger Setup
// ============
/**
* enables console logging
*/
enableConsole(optionsArg) {
if (globalThis.process && optionsArg && optionsArg.captureAll) {
const process = globalThis.process;
const originalStdoutWrite = process.stdout.write.bind(process.stdout);
const originalStderrWrite = process.stderr.write.bind(process.stderr);
process.stdout.write = (...args) => {
const logString = args[0];
if (!logString || typeof logString !== "string") {
return originalStdoutWrite(...args);
}
if (!logString.startsWith("LOG")) {
if (logString.includes("Error:")) {
this.log("error", logString);
} else {
this.log("info", logString);
}
return true;
}
return originalStdoutWrite(...args);
};
process.stderr.write = (...args) => {
const logString = args[0];
if (!logString || typeof logString !== "string" || !logString.startsWith("LOG")) {
this.log("error", logString);
return true;
}
return originalStderrWrite(...args);
};
}
this.consoleEnabled = true;
}
// =============
// log functions
// =============
/**
* main log method
* @param logLevelArg - the log level
* @param logMessageArg - the log message
* @param logDataArg - any additional log data
* @param correlationArg - info about corrleations
*/
async log(logLevelArg, logMessageArg, logDataArg, correlationArg) {
correlationArg = {
...{
id: isounique.uni(),
type: "none",
instance: this.uniInstanceId
},
...correlationArg
};
if (this.consoleEnabled) {
this.safeConsoleLog(`${logLevelArg}: ${logMessageArg}`);
}
const logPackage = {
timestamp: Date.now(),
type: "log",
context: this.logContext,
level: logLevelArg,
correlation: correlationArg,
message: logMessageArg
};
if (logDataArg) {
logPackage.data = logDataArg;
}
await this.logRouter.routeLog(logPackage);
}
increment(logLevelArg, logMessageArg, logDataArg, correlationArg = {
id: isounique.uni(),
type: "none"
}) {
if (this.consoleEnabled) {
this.safeConsoleLog(`INCREMENT: ${logLevelArg}: ${logMessageArg}`);
}
this.logRouter.routeLog({
timestamp: Date.now(),
type: "increment",
context: this.logContext,
level: logLevelArg,
message: logMessageArg,
correlation: correlationArg
});
}
async handleLog(logPackageArg) {
await this.logRouter.routeLog(logPackageArg);
}
safeConsoleLog(logLine) {
console.log(
`LOG => ${(/* @__PURE__ */ new Date()).getHours()}:${(/* @__PURE__ */ new Date()).getMinutes()}:${(/* @__PURE__ */ new Date()).getSeconds()} => ${logLine}`
);
}
createLogGroup(transactionId = "none") {
return new LogGroup(this, transactionId);
}
};
// ts/smartlog.classes.loggroup.ts
var LogGroup = class {
constructor(smartlogInstance, transactionIdArg) {
this.groupId = isounique.uni();
this.smartlogRef = smartlogInstance;
this.transactionId = transactionIdArg;
}
log(logLevelArg, logMessageArg, logDataArg) {
this.smartlogRef.log(logLevelArg, logMessageArg, logDataArg, {
id: isounique.uni(),
type: "none",
group: this.groupId,
instance: this.smartlogRef.uniInstanceId,
transaction: this.transactionId
});
}
};
export {
ConsoleLog,
LogGroup,
Smartlog
};
//# sourceMappingURL=bundle.js.map