Description
Expected Behavior
System fields should not be replaced by values from additional parameters.
If duplicate fields occur, a prefix should be added for fields from additional objects.
For example message -> _message
Current Behavior
import {Logger} from '@aws-lambda-powertools/logger';
const logger = new Logger({
serviceName: 'production-server',
});
const data = {
timestamp: 'one year ago',
name: 'user',
message: 'message from chat',
level: 'poweredUser',
service: 'internal chat',
}
logger.info('test message', {user: 'admin'});
logger.info('very important log key', data);
Received result
{"level":"INFO","message":"test message","sampling_rate":0,"service":"production-server","timestamp":"2024-10-17T14:40:49.209Z","user":"admin"}
{"level":"poweredUser","message":"message from chat","sampling_rate":0,"service":"internal chat","timestamp":"one year ago","name":"user"}
First log is correct, but in the second log all system fields have been based on the fields of the second object.
This is a very non-obvious behavior that results in the loss of important logs and many hours of debugging and understanding the cause.
Code snippet
import {Logger} from '@aws-lambda-powertools/logger';
const logger = new Logger({
serviceName: 'production-server',
});
const data = {
timestamp: 'one year ago',
name: 'user',
message: 'message from chat',
level: 'poweredUser',
service: 'internal chat',
}
logger.info('test message', {user: 'admin'});
logger.info('very important log key', data);
Steps to Reproduce
- run snippet code
- find changed system fields (timestamp, message, level.....)
Possible Solution
If duplicate fields occur, a prefix should be added for fields from additional objects.
For example message -> _message
Powertools for AWS Lambda (TypeScript) version
latest
AWS Lambda function runtime
20.x
Packaging format used
npm
Execution logs
{"level":"INFO","message":"test message","sampling_rate":0,"service":"production-server","timestamp":"2024-10-17T14:40:49.209Z","user":"admin"}
{"level":"poweredUser","message":"message from chat","sampling_rate":0,"service":"internal chat","timestamp":"one year ago","name":"user"}
Metadata
Metadata
Assignees
Labels
Type
Projects
Status