Damit die Logs schön formatiert aus einer Symfony 4 Anwendung in AWS Cloudwatch ankommen, muss man Monolog folgendermaßen konfigurieren:
# config/services.yaml
Monolog\Formatter\JsonFormatter:
calls:
- [includeStacktraces]
und
# config/packages/prod/monolog.yaml
monolog:
handlers:
main:
type: stream
level: error
path: '%kernel.logs_dir%/error.log'
formatter: Monolog\Formatter\JsonFormatter
Danach muss man der Cloudwatch Daemon konfigurieren:
# /etc/awslogs/awslogs.conf
[general]
# Path to the CloudWatch Logs agent's state file. The agent uses this file to maintain
# client side state across its executions.
state_file = /var/lib/awslogs/agent-state
[/var/www/html/var/log/error.prod.log]
datetime_format = [%Y-%m-%d H:%M:%S]
file = /var/www/html/var/log/error.log
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = test_group_name/error_log
und man erhält wunderbare (aggregierte) ErrorLog Informationen in Cloudwatch Logs Insight:
