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!