Skip to main content

Transforms

Transforms modify log records as they pass through the logging pipeline.

Built-in Transforms

(You don't need to pass these in if you want the default behavior.)

import { ErrorTransform, HttpTransform, TraceTransform, SanitizeTransform } from '@versionzero/logger';

// Create logger with transforms
const logger = new Logger({
transforms: [new ErrorTransform(), HttpTransform(), new TraceTransform(), new SanitizeTransform()]
});

Custom Transforms

Create custom transforms by implementing the collect(param, logger) method and/or the transform(record, logger) method:

Example:

class MyUserTransform {
collect(param) {
if (param instanceof User || (param.email && param.firstName && param.lastName)) {
return { user: param }
}
else {
return param;
}
}

transform(record) {
if (record.user) {
let updatedRecord = {...record};
delete updatedRecord.user;

updatedRecord.name = `${user.firstName} ${user.lastName}`;
updatedRecord.email = user.email;
return updatedRecord;
}
else {
return record;
}
}
}

const logger = new Logger({
transforms: [new MyCustomTransform(), ...Logger.defaultTransforms]
});
// or
const logger = new Logger();
logger.transforms = [new MyCustomTransform(), ...logger.transforms];

// enabling you to just pass it as a parameter...
const user = new User('Robert', 'Smith', 'bob@example.com');
logger.info('a user will now be logged as two separate log record fields, name and email...', user);

Note: It is highly recommended that you ensure that SanitizeTransform is the final Transform, as it contains transformations necessary for eliminating circular references and removing empty fields from the log record!