ayaou / command-logger-bundle
This bundle logs all commands executed with console, along with their execution time and errors if applied.
Installs: 20
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 5
Type:symfony-bundle
Requires
- php: >=8.1
- doctrine/doctrine-bundle: ^2.7
- doctrine/orm: ^2|^3
- symfony/console: ^6.4|^7.0
- symfony/dependency-injection: ^6.4|^7.0
- symfony/event-dispatcher: ^6.4|^7.0
- symfony/uid: ^6.4|^7.0
- symfony/yaml: ^6.4|^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: *
- phpstan/phpstan-symfony: *
- phpunit/phpunit: ^10
- rector/rector: *
- roave/security-advisories: dev-latest
- symfony/framework-bundle: ^6.4|^7.0
- symfony/phpunit-bridge: ^6.4|^7.0
This package is auto-updated.
Last update: 2025-05-12 16:50:55 UTC
README
Overview
The Command Logger Bundle is a Symfony bundle that logs executed console commands. It provides insights into command execution, including arguments, execution time, exit codes, and errors.
Installation
Install the bundle via Composer:
composer require ayaou/command-logger-bundle
Register the bundle in config/bundles.php
if not automatically added:
Ayaou\CommandLoggerBundle\AyaouCommandLoggerBundle::class => ['all' => true],
Configuration
Add the following configuration in config/packages/command_logger.yaml
:
command_logger: enabled: true # Enable or disable logging (default: true) purge_threshold: 100 # Days after which old logs are deleted (e.g., 100 means logs older than 100 days are removed) commands: # List of commands to log if they are not annotated (This can be useful for commands located in third-party bundles) - app:example-command - app:another-command
Usage
Enabling Logging on a Command
Use configuration commands
array (if not using attributes) Or:
Use the CommandLogger
attribute on any Symfony command to enable logging:
use Ayaou\CommandLoggerBundle\Attribute\CommandLogger; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; #[AsCommand(name: 'app:example-command')] #[CommandLogger] class ExampleCommand extends Command { protected function execute(InputInterface $input, OutputInterface $output): int { $output->writeln('Executing example command...'); return Command::SUCCESS; } }
Entity Structure
The logs are stored in the command_log
table with the following fields:
commandName
– Name of the executed commandarguments
– Command arguments in JSON formatstartTime
– Execution start timeendTime
– Execution end timeexitCode
– Command exit codeerrorMessage
– Error message if applicableexecutionToken
– Unique identifier for execution tracking
Purging Old Logs
The bundle includes an automatic mechanism to purge logs older than the configured purge_threshold
. You can also manually trigger log cleanup using the following command:
bin/console command-logger:purge
By default, this uses the purge_threshold
value from the configuration. To override it, specify a custom threshold (in days) with the --threshold
or -t
option:
bin/console command-logger:purge --threshold=30
For example, --threshold=30
removes logs older than 30 days
License
MIT License