@loglayer/transport
Version:
Base transport used to implement logging transports for loglayer.
207 lines (203 loc) • 5.88 kB
JavaScript
// src/BaseTransport.ts
import { LogLevel } from "@loglayer/shared";
var BaseTransport = class {
/**
* An identifier for the transport. If not defined, a random one will be generated.
*/
id;
/**
* Instance of the logger library
*/
logger;
/**
* If false, the transport will not send logs to the logger.
*/
enabled;
/**
* If true, the transport will log to the console for debugging purposes
*/
consoleDebug;
constructor(config) {
this.id = config.id ?? (/* @__PURE__ */ new Date()).getTime().toString() + Math.random().toString();
this.logger = config.logger;
this.enabled = config.enabled ?? true;
this.consoleDebug = config.consoleDebug ?? false;
}
/**
* LogLayer calls this to send logs to the transport
*/
_sendToLogger(params) {
if (!this.enabled) {
return;
}
const messages = this.shipToLogger(params);
if (this.consoleDebug) {
switch (params.logLevel) {
case LogLevel.info:
console.info(...messages);
break;
case LogLevel.warn:
console.warn(...messages);
break;
case LogLevel.error:
console.error(...messages);
break;
case LogLevel.trace:
console.debug(...messages);
break;
case LogLevel.debug:
console.debug(...messages);
break;
case LogLevel.fatal:
console.debug(...messages);
break;
default:
console.log(...messages);
}
}
}
/**
* Returns the logger instance attached to the transport
*/
getLoggerInstance() {
return this.logger;
}
};
// src/types.ts
import { LogLevel as LogLevel2 } from "@loglayer/shared";
var LogLevelPriority = {
[LogLevel2.trace]: 0,
[LogLevel2.debug]: 1,
[LogLevel2.info]: 2,
[LogLevel2.warn]: 3,
[LogLevel2.error]: 4,
[LogLevel2.fatal]: 5
};
// src/index.ts
import { LogLevel as LogLevel4 } from "@loglayer/shared";
// src/test-utils.ts
function testTransportOutput(label, logLayerInstance) {
console.log(`
===== Start Livetest for: ${label} =====`);
console.log("\n===== info() ====");
logLayerInstance.info("info message");
console.log("\n===== warn() ====");
logLayerInstance.warn("warn message");
console.log("\n===== error() ====");
logLayerInstance.error("error message");
console.log("\n===== debug() ====");
logLayerInstance.debug("debug message");
console.log("\n===== trace() ====");
logLayerInstance.trace("trace message");
console.log("\n===== fatal() ====");
logLayerInstance.fatal("fatal message");
console.log("\n===== multiple parameters ====");
logLayerInstance.info("multiple info message", "with multiple", "parameters");
console.log("\n===== multiple parameters with mixed data ====");
logLayerInstance.info("mixed data", 1234, void 0, null, true);
console.log("\n===== withMetadata() ====");
logLayerInstance.withMetadata({
test: "metadata",
test2: "metadata2"
}).trace("trace message with metadata");
console.log("\n===== withError() ====");
logLayerInstance.withError(new Error("error object")).trace("trace message with error");
console.log("\n===== withError() + withMetadata() ====");
logLayerInstance.withMetadata({
test: "metadata",
test2: "metadata2",
nested: {
data: "nested data"
}
}).withError(new Error("error object")).error("error message with metadata and error instance");
console.log("\n===== onlyError() ====");
logLayerInstance.errorOnly(new Error("error message"));
console.log("\n===== onlyMetadata() ====");
logLayerInstance.metadataOnly({
only: "metadata",
arrayData: [1, 2, 3]
});
console.log("\n===== withContext() ====");
logLayerInstance.withContext({
test: "data"
});
logLayerInstance.info("context data");
console.log(`
===== End Livetest for: ${label} =====`);
}
// src/LoggerlessTransport.ts
import { LogLevel as LogLevel3 } from "@loglayer/shared";
var LoggerlessTransport = class {
/**
* An identifier for the transport. If not defined, a random one will be generated.
*/
id;
/**
* If false, the transport will not send logs to the logger.
*/
enabled;
/**
* Minimum log level to process. Defaults to "trace".
*/
level;
/**
* If true, the transport will log to the console for debugging purposes
*/
consoleDebug;
constructor(config) {
this.id = (/* @__PURE__ */ new Date()).getTime().toString() + Math.random().toString();
this.enabled = config.enabled ?? true;
this.consoleDebug = config.consoleDebug ?? false;
this.level = config.level ?? "trace";
}
/**
* LogLayer calls this to send logs to the transport
*/
_sendToLogger(params) {
if (!this.enabled) {
return;
}
if (LogLevelPriority[params.logLevel] < LogLevelPriority[this.level]) {
return;
}
const messages = this.shipToLogger(params);
if (this.consoleDebug) {
switch (params.logLevel) {
case LogLevel3.info:
console.info(...messages);
break;
case LogLevel3.warn:
console.warn(...messages);
break;
case LogLevel3.error:
console.error(...messages);
break;
case LogLevel3.trace:
console.debug(...messages);
break;
case LogLevel3.debug:
console.debug(...messages);
break;
case LogLevel3.fatal:
console.debug(...messages);
break;
default:
console.log(...messages);
}
}
}
/**
* Returns the logger instance attached to the transport
*/
getLoggerInstance() {
throw new Error("This transport does not have a logger instance");
}
};
export {
BaseTransport,
LogLevel4 as LogLevel,
LogLevelPriority,
LoggerlessTransport,
testTransportOutput
};
//# sourceMappingURL=index.js.map