All you need to log with Bref on AWS Lambda.
All you need to log with Bref on AWS Lambda.
Bref/Logger is a lightweight PSR-3 logger for AWS Lambda. Messages are sent to stderr
so that they end up in CloudWatch.
As explained in the Bref documentation, logging in AWS Lambda means logging to stderr
. Logs written to stderr
are automatically sent to CloudWatch, AWS’ solution to collect and view logs.
While classic loggers like Monolog work fine, this logger comes as a simpler and lighter alternative optimized for AWS Lambda. It does not require any configuration and currently contains a single class.
Since it is PSR-3 compliant, Bref/Logger is also compatible with any framework or library consuming a PSR-3 logger.
composer require bref/logger
The logger does not require any configuration:
$logger = new \Bref\Logger\StderrLogger();
By default messages above the warning
level will be logged, the rest will be discarded.
It is possible to log using any PSR-3 log level, the most common ones being:
$logger->debug('This is a debug message');
$logger->info('This is an info');
$logger->warning('This is a warning');
$logger->error('This is an error');
[WARNING] This is a warning
[ERROR] This is an error
Messages under warning
are not logged.
PSR-3 placeholders can be used to insert information from the $context
array into the message without having to concatenate strings manually:
$logger->warning('Invalid login attempt for email {email}', [
'email' => $email,
]);
[WARNING] Invalid login attempt for email [email protected]
Exceptions can be logged under the exception
key:
try {
// ...
} catch (\Exception $e) {
$logger->error('Impossible to complete the action', [
'exception' => $e,
]);
}
[ERROR] Impossible to complete the action
InvalidArgumentException: Impossible to complete the action in /var/task/index.php:12
Stack trace:
#0 /var/task/index.php(86): main()
...
It is possible to change the level above which messages are logged.
For example to log all messages:
$logger = new \Bref\Logger\StderrLogger(\Psr\Log\LogLevel::DEBUG);