74 lines
2.5 KiB
JavaScript
74 lines
2.5 KiB
JavaScript
const HolesailLogger = require('holesail-logger');
|
|
// Define LOG_LEVELS explicitly since they may not be accessible from the logger instance
|
|
const LOG_LEVELS = {
|
|
DEBUG: 0,
|
|
INFO: 1,
|
|
WARN: 2,
|
|
ERROR: 3
|
|
};
|
|
// Create a singleton instance of HolesailLogger with minLevel from .env
|
|
let logger;
|
|
try {
|
|
logger = new HolesailLogger({
|
|
enabled: true,
|
|
prefix: 'P2NS',
|
|
level: parseInt(process.env.LOG_LEVEL || 0)
|
|
});
|
|
// Test logger initialization
|
|
logger.log({ type: LOG_LEVELS.INFO, msg: 'Logger initialized successfully' });
|
|
} catch (error) {
|
|
console.error(`Failed to initialize HolesailLogger: ${error.message}`);
|
|
// Fallback to console-based logging
|
|
logger = {
|
|
log: ({ type, msg }) => {
|
|
const timestamp = new Date().toISOString();
|
|
const levelStr = type === 0 ? 'DEBUG' : type === 1 ? 'INFO' : type === 2 ? 'WARN' : type === 3 ? 'ERROR' : 'UNKNOWN';
|
|
const consoleMethod = type === 2 ? console.warn : type === 3 ? console.error : console.log;
|
|
consoleMethod(`${timestamp} [P2NS] [${levelStr}] ${msg}`);
|
|
}
|
|
};
|
|
}
|
|
// Wrapper functions to support prefix parameter and correct log level
|
|
function logDebug(prefix, message) {
|
|
logger.log({ type: LOG_LEVELS.DEBUG, msg: `[${prefix}] ${message}` });
|
|
}
|
|
function logInfo(prefix, message) {
|
|
logger.log({ type: LOG_LEVELS.INFO, msg: `[${prefix}] ${message}` });
|
|
}
|
|
function logWarn(prefix, message) {
|
|
logger.log({ type: LOG_LEVELS.WARN, msg: `[${prefix}] ${message}` });
|
|
}
|
|
function logError(prefix, message) {
|
|
logger.log({ type: LOG_LEVELS.ERROR, msg: `[${prefix}] ${message}` });
|
|
}
|
|
|
|
/**
|
|
* Update log level at runtime
|
|
* @param {number} newLevel - New log level (0-3)
|
|
*/
|
|
function updateLogLevel(newLevel) {
|
|
try {
|
|
// Recreate logger with new level
|
|
logger = new HolesailLogger({
|
|
enabled: true,
|
|
prefix: 'P2NS',
|
|
level: newLevel
|
|
});
|
|
logger.log({ type: LOG_LEVELS.INFO, msg: `Log level updated to ${newLevel}` });
|
|
} catch (error) {
|
|
console.error(`Failed to update logger level: ${error.message}`);
|
|
// Fallback logger
|
|
logger = {
|
|
log: ({ type, msg }) => {
|
|
const timestamp = new Date().toISOString();
|
|
const levelStr = type === 0 ? 'DEBUG' : type === 1 ? 'INFO' : type === 2 ? 'WARN' : type === 3 ? 'ERROR' : 'UNKNOWN';
|
|
const consoleMethod = type === 2 ? console.warn : type === 3 ? console.error : console.log;
|
|
if (type >= newLevel) {
|
|
consoleMethod(`${timestamp} [P2NS] [${levelStr}] ${msg}`);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
module.exports = { logDebug, logInfo, logWarn, logError, updateLogLevel }; |