/**
* Strips metadata from log entries for staging environments and applies default values.
*
* @param {object} logEntry - The log entry object.
* @param {string} environment - The current environment ('production', 'staging', etc.).
* @returns {object} - The log entry with metadata stripped and default values applied.
*/
function stripMetadataAndApplyDefaults(logEntry, environment) {
if (environment === 'staging') {
// Remove all metadata fields
for (const key in logEntry) {
if (key.startsWith('_')) { // Remove fields starting with underscore (metadata)
delete logEntry[key];
}
}
// Apply default values
logEntry.timestamp = new Date().toISOString(); // Default timestamp
logEntry.userId = 'unknown'; // Default user ID
logEntry.source = 'application'; // Default source
logEntry.level = 'info'; // Default log level
logEntry.message = logEntry.message || 'No message provided'; //Default message
}
return logEntry;
}
// Example Usage (for testing)
// const logEntry = {
// _timestamp: '2024-10-27T10:00:00Z',
// _userId: 'user123',
// _source: 'web',
// _level: 'debug',
// message: 'This is a debug message',
// extraData: {key: 'value'}
// };
// const stagedLogEntry = stripMetadataAndApplyDefaults(logEntry, 'staging');
// console.log(stagedLogEntry);
Add your comment