@johntad/m-pesa
Version:
A TypeScript SDK for integrating M-Pesa mobile payment services into applications, enabling seamless money transfers and transactions.
111 lines (110 loc) • 3.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = exports.LogLevel = void 0;
/**
* Defines the severity levels for log messages.
*
* This enum provides a standardized set of log levels to categorize the importance
* and urgency of log messages generated by the application.
*
* @enum {number}
*
* @property {number} Emergency - Indicates a system-wide message that immediately jeopardizes the system and may require immediate action.
* @property {number} Alert - A serious problem that requires immediate attention.
* @property {number} Critical - A critical condition that, although not immediately life-threatening, requires immediate attention.
* @property {number} Error - An error condition.
* @property {number} Warning - A warning condition.
* @property {number} Notice - A normal but significant condition.
* @property {number} Informational - Informational messages.
* @property {number} Debug - Debug-level messages for development and troubleshooting.
*/
var LogLevel;
(function (LogLevel) {
LogLevel[LogLevel["Emergency"] = 0] = "Emergency";
LogLevel[LogLevel["Alert"] = 1] = "Alert";
LogLevel[LogLevel["Critical"] = 2] = "Critical";
LogLevel[LogLevel["Error"] = 3] = "Error";
LogLevel[LogLevel["Warning"] = 4] = "Warning";
LogLevel[LogLevel["Notice"] = 5] = "Notice";
LogLevel[LogLevel["Informational"] = 6] = "Informational";
LogLevel[LogLevel["Debug"] = 7] = "Debug";
})(LogLevel || (exports.LogLevel = LogLevel = {}));
/**
* A logger utility for standardized logging.
*/
class Logger {
/**
* Creates a new Logger instance.
* @param minLogLevel - The minimum log level to capture (default is Informational).
*/
constructor(minLogLevel = LogLevel.Informational) {
this.minLogLevel = minLogLevel;
}
/**
* Logs a message if the specified level meets the minimum log level.
* @param level - The log level for this message.
* @param message - The log message.
* @param context - Additional contextual information (optional).
*/
log(level, message, context) {
if (level > this.minLogLevel)
return;
const logEntry = {
timestamp: new Date().toISOString(),
level: LogLevel[level].toLowerCase(),
message,
context,
};
// Output as JSON for easy parsing
console.log(JSON.stringify(logEntry));
}
/**
* Logs an emergency message (level 0).
*/
logEmergency(message, context) {
this.log(LogLevel.Emergency, message, context);
}
/**
* Logs an alert message (level 1).
*/
logAlert(message, context) {
this.log(LogLevel.Alert, message, context);
}
/**
* Logs a critical message (level 2).
*/
logCritical(message, context) {
this.log(LogLevel.Critical, message, context);
}
/**
* Logs an error message (level 3).
*/
logError(message, context) {
this.log(LogLevel.Error, message, context);
}
/**
* Logs a warning message (level 4).
*/
logWarning(message, context) {
this.log(LogLevel.Warning, message, context);
}
/**
* Logs a notice message (level 5).
*/
logNotice(message, context) {
this.log(LogLevel.Notice, message, context);
}
/**
* Logs an informational message (level 6).
*/
logInfo(message, context) {
this.log(LogLevel.Informational, message, context);
}
/**
* Logs a debug message (level 7).
*/
logDebug(message, context) {
this.log(LogLevel.Debug, message, context);
}
}
exports.Logger = Logger;