Skip to content

Commit

Permalink
VAMCS-19329: filter unexpected log messages containing pii (#19388)
Browse files Browse the repository at this point in the history
* VACMS-19329: test log message service and level prcessor fo ddog

* VACMS-19329: test log message service and level prcessor fo ddog
  • Loading branch information
edmund-dunn authored Oct 2, 2024
1 parent 1147a2a commit 07e91bb
Show file tree
Hide file tree
Showing 11 changed files with 115 additions and 6 deletions.
2 changes: 1 addition & 1 deletion config/dev/syslog.settings.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
identity: drupal
facility: 176
format: '!base_url|!timestamp|!type|!ip|!request_uri|!referer|!uid|!link|!message'
format: '!base_url|!timestamp|!type|!ip|!request_uri|!referer|!severity|!uid|!link|!message'
_core:
default_config_hash: vdXLRPZRg35PBykBRRXr6RTql5EJR_fUi2kxyZ8c5m0
2 changes: 1 addition & 1 deletion config/prod/syslog.settings.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
identity: drupal
facility: 176
format: '!base_url|!timestamp|!type|!ip|!request_uri|!referer|!uid|!link|!message'
format: '!base_url|!timestamp|!type|!ip|!request_uri|!referer|!severity|!uid|!link|!message'
_core:
default_config_hash: vdXLRPZRg35PBykBRRXr6RTql5EJR_fUi2kxyZ8c5m0
2 changes: 1 addition & 1 deletion config/stg/syslog.settings.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
identity: drupal
facility: 176
format: '!base_url|!timestamp|!type|!ip|!request_uri|!referer|!uid|!link|!message'
format: '!base_url|!timestamp|!type|!ip|!request_uri|!referer|!severity|!uid|!link|!message'
_core:
default_config_hash: vdXLRPZRg35PBykBRRXr6RTql5EJR_fUi2kxyZ8c5m0
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php

declare(strict_types=1);

namespace Drupal\va_gov_backend\Logger\Processor;

use Monolog\Level;
use Monolog\LogRecord;
use Monolog\Processor\ProcessorInterface;

/**
* Processor to map levels to Datadog status.
*/
class DatadogLevelProcessor implements ProcessorInterface {

/**
* Processor function.
*
* @param \Monolog\LogRecord $record
* The record.
*
* @return \Monolog\LogRecord
* The processed record.
*/
public function __invoke(LogRecord $record): LogRecord {
// @todo Check if we really need this.
return new LogRecord(
$record->datetime,
$record->channel,
match($record->level) {
Level::Debug, Level::Info, Level::Notice => Level::Info,
Level::Warning => Level::Warning,
Level::Error, Level::Alert, Level::Critical, Level::Emergency => Level::Error,
},
$record->message,
$record->context,
$record->extra,
$record->formatted
);
}

}
43 changes: 43 additions & 0 deletions docroot/modules/custom/va_gov_backend/src/Service/TestLogging.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

namespace Drupal\va_gov_backend\Service;

use Drupal\Core\Logger\LoggerChannelFactoryInterface;

/**
* Adds multiple test log messages to verify ddog filtering.
*/
final class TestLogging implements TestLoggingInterface {

/**
* Logger Factory.
*
* @var \Drupal\Core\Logger\LoggerChannelFactoryInterface
*/
protected $loggerFactory;

/**
* Constructs a TestLogging object.
*
* @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $loggerFactory
* The logger factory.
*/
public function __construct(
LoggerChannelFactoryInterface $loggerFactory,
) {
$this->loggerFactory = $loggerFactory;
}

/**
* {@inheritdoc}
*/
public function runTest(): void {
$logger = $this->loggerFactory->get('va_gov_testing');
$logger->info('This is a test info log message containing a VA email. test_harry.styles@va.gov');
$logger->notice('This is a test notice log message containing a non-VA email. test_peter.parker@gmail.com');
$logger->warning('This is a test warning log message.');
$logger->error('This is a test error log message.');
$logger->critical('This is a test critical log message.');
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace Drupal\va_gov_backend\Service;

/**
* Adds multiple test log messages to verify ddog filtering.
*/
interface TestLoggingInterface {

/**
* Fires tests logs to test ddog filtering.
*/
public function runTest(): void;

}
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,11 @@ services:
# monolog.processor.va_gov_datadog_apm:
# class: Drupal\va_gov_backend\Logger\Processor\DatadogApmProcessor
# arguments: ['@va_gov_backend.datadog_context_provider']
monolog.processor.va_gov_datadog_severity:
class: Drupal\va_gov_backend\Logger\Processor\DatadogLevelProcessor
logger.channel.va_gov_media:
parent: logger.channel_base
arguments: [ 'va_gov_testing' ]
va_gov_backend.test_logging:
class: Drupal\va_gov_backend\Service\TestLogging
arguments: ['@logger.factory']
2 changes: 1 addition & 1 deletion docroot/sites/default/services/services.dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ parameters:
- 'message_placeholder'
- 'referer'
- 'request_uri'
- 'va_gov_datadog_apm'
- 'va_gov_datadog_severity'
1 change: 1 addition & 0 deletions docroot/sites/default/services/services.monolog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ parameters:
- 'message_placeholder'
- 'referer'
- 'request_uri'
- 'va_gov_datadog_severity'
2 changes: 1 addition & 1 deletion docroot/sites/default/services/services.prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ parameters:
- 'message_placeholder'
- 'referer'
- 'request_uri'
- 'va_gov_datadog_apm'
- 'va_gov_datadog_severity'
2 changes: 1 addition & 1 deletion docroot/sites/default/services/services.staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ parameters:
- 'message_placeholder'
- 'referer'
- 'request_uri'
- 'va_gov_datadog_apm'
- 'va_gov_datadog_severity'

0 comments on commit 07e91bb

Please sign in to comment.