1. /**
  2. * Strips metadata from log entries for staging environments and applies default values.
  3. *
  4. * @param {object} logEntry - The log entry object.
  5. * @param {string} environment - The current environment ('production', 'staging', etc.).
  6. * @returns {object} - The log entry with metadata stripped and default values applied.
  7. */
  8. function stripMetadataAndApplyDefaults(logEntry, environment) {
  9. if (environment === 'staging') {
  10. // Remove all metadata fields
  11. for (const key in logEntry) {
  12. if (key.startsWith('_')) { // Remove fields starting with underscore (metadata)
  13. delete logEntry[key];
  14. }
  15. }
  16. // Apply default values
  17. logEntry.timestamp = new Date().toISOString(); // Default timestamp
  18. logEntry.userId = 'unknown'; // Default user ID
  19. logEntry.source = 'application'; // Default source
  20. logEntry.level = 'info'; // Default log level
  21. logEntry.message = logEntry.message || 'No message provided'; //Default message
  22. }
  23. return logEntry;
  24. }
  25. // Example Usage (for testing)
  26. // const logEntry = {
  27. // _timestamp: '2024-10-27T10:00:00Z',
  28. // _userId: 'user123',
  29. // _source: 'web',
  30. // _level: 'debug',
  31. // message: 'This is a debug message',
  32. // extraData: {key: 'value'}
  33. // };
  34. // const stagedLogEntry = stripMetadataAndApplyDefaults(logEntry, 'staging');
  35. // console.log(stagedLogEntry);

Add your comment