From 8f9a19e36e063c994d0742c68a5144488d513d8b Mon Sep 17 00:00:00 2001 From: Andrew Otto Date: Fri, 8 Mar 2019 16:50:34 -0500 Subject: [PATCH] ApiMain.php api/request logging event changes - Use 'Z' UTC timezone on dt - Don't provide empty arrays if no data entries - No need to set X-Request-Id in http.request_headers, it is meta.request_id Bug: T214080 Bug: T212529 Change-Id: I37aa41a46ce74b372070e88a2f4da746fcbe2449 --- includes/api/ApiMain.php | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php index a233368156..295d5d0488 100644 --- a/includes/api/ApiMain.php +++ b/includes/api/ApiMain.php @@ -1643,33 +1643,29 @@ class ApiMain extends ApiBase { $logCtx = [ '$schema' => '/mediawiki/api/request/0.0.1', 'meta' => [ + 'request_id' => WebRequest::getRequestId(), 'id' => UIDGenerator::newUUIDv1(), - 'dt' => gmdate( 'c' ), + 'dt' => wfTimestamp( TS_ISO_8601 ), 'domain' => $this->getConfig()->get( 'ServerName' ), 'stream' => 'mediawiki.api-request' ], 'http' => [ 'method' => $request->getMethod(), - 'client_ip' => $request->getIP(), - 'request_headers' => [] + 'client_ip' => $request->getIP() ], 'database' => wfWikiID(), 'backend_time_ms' => (int)round( $time * 1000 ), - 'params' => [] ]; // If set, these headers will be logged in http.request_headers. - // A http.request_headers entry should not be set if the header was not provided. - if ( $request->getHeader( 'User-agent' ) ) { - $logCtx['http']['request_headers']['user-agent'] = $request->getHeader( 'User-agent' ); - } - if ( $request->getHeader( 'Api-user-agent' ) ) { - $logCtx['http']['request_headers']['api-user-agent'] = $request->getHeader( 'Api-user-agent' ); + $httpRequestHeadersToLog = [ 'accept-language', 'referer', 'user-agent' ]; + foreach ( $httpRequestHeadersToLog as $header ) { + if ( $request->getHeader( $header ) ) { + // Set the header in http.request_headers + $logCtx['http']['request_headers'][$header] = $request->getHeader( $header ); + } } - $logCtx['meta']['request_id'] = - $logCtx['http']['request_headers']['x-request-id'] = WebRequest::getRequestId(); - if ( $e ) { $logCtx['api_error_codes'] = []; foreach ( $this->errorMessagesFromException( $e ) as $msg ) { -- 2.20.1