Lập trình – Log query database cho drupal

Bước 1: Thêm thư viện drupal/monolog

#composer.json
"drupal/monolog": "^1.3"

Bước 2: Thêm file monolog.services.yml

#sites/default/monolog.services.yml
parameters:
  monolog.channel_handlers:
    default: ['rotating_file']
    php: ['file']
  monolog.processors: ['message_placeholder', 'current_user', 'request_uri', 'ip', 'referer']

services:
  monolog.handler.browser_console:
    class: Monolog\Handler\BrowserConsoleHandler
    arguments: ['1', false]
  monolog.handler.file:
    class: Monolog\Handler\RotatingFileHandler
    arguments: ['/var/log/drupal-application.log', '30', '200', false]
  monolog.handler.rotating_file:
    class: Monolog\Handler\RotatingFileHandler
    arguments: ['/var/log/drupal-debug.log', 10, 'monolog.level.debug']

Bước 3: Sửa file index.php (các đoạn code có comment)

//icovn-import Database
use Drupal\Core\Database\Database;
use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request;

$autoloader = require_once 'autoload.php';

$kernel = new DrupalKernel('prod', $autoloader);

$request = Request::createFromGlobals();

//icovn-start log query before handle request
Database::startLog('views');

$response = $kernel->handle($request);
$response->send();

//icovn-start write query log
\Drupal::logger('php')->error('Start write query log.');
$queries = Database::getLog('views');
foreach ($queries as $query) {
   $query_string = strtr($query['query'], $query['args']);
   \Drupal::logger('php')->error('----------------------------------------------------------------------');
   \Drupal::logger('php')->error("query: \n\r" . $query_string ."\n\r|");
}
\Drupal::logger('php')->error('End write query log.');

$kernel->terminate($request, $response);

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *