os2web / os2web_audit
Drupal OS2 module that provides audit logging for Danish Municipalities
Installs: 5 905
Dependents: 3
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 2
Open Issues: 0
Type:drupal-module
pkg:composer/os2web/os2web_audit
Requires
- php: ^8.1
 - ext-curl: *
 - drupal/advancedqueue: ^1.2
 - drush/drush: ^11|^12|^13
 
Requires (Dev)
README
This audit module can be used to track changes and perform audit logging on drupal sites.
Features
This module includes three plugins that facilitate logging information to Loki, files, or to the database through Drupal's watchdog logger.
These logging providers are designed using Drupal's plugin APIs. Consequently, it opens up possibilities for creating new AuditLogger plugins within other modules, thus enhancing the functionality of this audit logging.
For performance purposes we use a queue system. This avoids hindering performance more than necessary as the actual logging is done async. Furthermore, this allows for retries in case any audit log plugins should fail.
Installation
Enable the module and go to the modules setting page at
/admin/config/os2web_audit/settings/.
composer require os2web/os2web_audit drush pm:enable os2web_audit
Drush
Test audit log
The module provides a Drush command named audit:log. This command enables you to log a test message to the configured logger. The audit:log command accepts a string that represents the message to be logged.
The message provided, will be logged twice, once as an informational message and once as an error message.
drush audit:log 'This is a test message'
Retry jobs
The module also comes with methods for retrying failed jobs in the
os2web_audit queue.
drush audit:retry-failed-jobs
Per default, it simply retries all failed jobs however it comes with the following options:
--id[=ID] Retry a specific job by ID (e.g. 1245.) --ignore-state Retry job regardless of state. This only effects the --id option. --limit[=LIMIT] Retry (up to) a limited number of jobs. Minimum: 1, Maximum: 5000, Default 1000.
Usage
The module exposes a simple Logger service which can log an info and error
messages.
Inject the logger service named os2web_audit.logger and send messages into the
logger as shown below:
$msg = sprintf('Fetch personal data from service with parameter: %s', $param); $this->auditLogger->info('Lookup', $msg);
Implementations
See implementations for a list of modules that have audit logging integrated.
Queue
The actual logging is handled by jobs in an Advanced Queue queue.
The queue, OS2Web audit (os2web_audit), must be
processed by a server cron job, e.g.
drush advancedqueue:queue:process os2web_audit
List the queue (and all other queues) with
drush advancedqueue:queue:list
or go to /admin/config/system/queues/jobs/os2web_audit for a
graphical overview of jobs in the queue.
Purge successful jobs
It is possible to configure the queue to purge jobs based on the number of jobs or the number of days since processing.
Go to admin/config/system/queues/manage/os2web_audit to configure this.
Below is an example of purging successful jobs after 7 days.
Remember to export this to ensure it is not overridden upon config import.
Coding standards
PHP files (PHP_CodeSniffer)
Check PHP coding standards
docker run --interactive --rm --volume ${PWD}:/app itkdev/php8.3-fpm:latest composer install docker run --interactive --rm --volume ${PWD}:/app itkdev/php8.3-fpm:latest composer coding-standards-check
Apply coding standard changes
docker run --interactive --rm --volume ${PWD}:/app itkdev/php8.3-fpm:latest composer install docker run --interactive --rm --volume ${PWD}:/app itkdev/php8.3-fpm:latest composer coding-standards-apply
Code analysis
phpstan is used to perform static analysis of the code. Run the following script:
./scripts/code-analysis
Markdown files
docker run --interactive --rm --volume "$PWD:/md" itkdev/markdownlint markdownlint '**/*.md' --fix docker run --interactive --rm --volume "$PWD:/md" itkdev/markdownlint markdownlint '**/*.md'
