plumthedev/laravel-cloudwatch-logger

Laravel Cloudwatch Logger is a Laravel package providing seamless integration with AWS CloudWatch for logging.

v1.0.0 2024-03-10 22:12 UTC

This package is auto-updated.

Last update: 2024-04-13 08:02:19 UTC


README

PHP Laravel PhpStorm

quality check tests coverage

Laravel Cloudwatch Logger is a Laravel package that provides integration with AWS CloudWatch for logging.

Installation

You can install the package via composer:

composer require plumthedev/laravel-cloudwatch-logger

Configuration

This package allows you to configure AWS CloudWatch logging settings either globally or per channel.

Global Configuration

If the logging.cloudwatch key is not present in your Laravel configuration, the package merges the following default configuration into the global logging configuration:

Configuration Key Description Env Name Default Value
logging.cloudwatch.name Name of the CloudWatch log channel CLOUDWATCH_LOGGER_NAME Laravel Cloudwatch Logger
logging.cloudwatch.region AWS region for CloudWatch logging CLOUDWATCH_LOGGER_REGION eu-central-1
logging.cloudwatch.version AWS SDK version CLOUDWATCH_LOGGER_VERSION latest
logging.cloudwatch.credentials.key AWS access key for authentication CLOUDWATCH_LOGGER_CREDENTIALS_KEY
logging.cloudwatch.credentials.secret AWS secret key for authentication CLOUDWATCH_LOGGER_CREDENTIALS_SECRET
logging.cloudwatch.group_name Default log group name CLOUDWATCH_LOGGER_GROUP_NAME Your App Name
logging.cloudwatch.stream_name Default log stream name CLOUDWATCH_LOGGER_STREAM_NAME Your App Name
logging.cloudwatch.retention_days Number of days to retain log events CLOUDWATCH_LOGGER_RETENTION_DAYS 14
logging.cloudwatch.batch_size Maximum number of log events to send in one batch CLOUDWATCH_LOGGER_BATCH_SIZE 25

Channel Configuration

You can also override or specify additional configuration options for specific logging channels. For example:

// config/logging.php

'channels' => [
    ...
    'cloudwatch' => [
        'driver' => 'cloudwatch',
        'group_name' => 'api_v1',
        'stream' => 'V1 Payments Logger',
    ],
],

'cloudwatch' => [
   'name' => 'Laravel App',
   'group_name' => 'api',
   'stream' => 'component',
   'credentials' => [
        'key' => '...',
        'secret' => '...',
    ],
],

In the channel configuration, you can define specific settings such as the log group name (group_name) and log stream name (stream_name). These settings will override the corresponding global configuration values for the CloudWatch logging driver. While credentials will keep the same.

Testing

To run tests, you need to build a Docker image first:

make build

Only then you can execute the tests:

make test

Contribution

If you spot areas for improvement, wish to make enhancements, or have ideas for further development, feel free to contribute to this project.

To access the project terminal, you must first build the Docker image:

make build

Afterward, you can enter the console:

make run

Before submitting a pull request, ensure everything is in order:

make check

License

This project is licensed under the terms of the MIT license. See the LICENSE file for details.