Use X-REQUEST-ID for Logging
This commit is contained in:
parent
10864e50c7
commit
5584e7a4e5
2 changed files with 30 additions and 4 deletions
|
@ -22,6 +22,7 @@
|
||||||
namespace Friendica\App;
|
namespace Friendica\App;
|
||||||
|
|
||||||
use Friendica\Core\Config\Capability\IManageConfigValues;
|
use Friendica\Core\Config\Capability\IManageConfigValues;
|
||||||
|
use Friendica\Core\System;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Container for the whole request
|
* Container for the whole request
|
||||||
|
@ -38,9 +39,17 @@ class Request
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const DEFAULT_FORWARD_FOR_HEADER = 'HTTP_X_FORWARDED_FOR';
|
const DEFAULT_FORWARD_FOR_HEADER = 'HTTP_X_FORWARDED_FOR';
|
||||||
|
/**
|
||||||
|
* The default Request-ID header to retrieve the current transaction ID from the HTTP header (if set)
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const DEFAULT_REQUEST_ID_HEADER = 'HTTP_X_REQUEST_ID';
|
||||||
|
|
||||||
/** @var string The remote IP address of the current request */
|
/** @var string The remote IP address of the current request */
|
||||||
protected $remoteAddress;
|
protected $remoteAddress;
|
||||||
|
/** @var string The request-id of the current request */
|
||||||
|
protected $requestId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string The remote IP address of the current request
|
* @return string The remote IP address of the current request
|
||||||
|
@ -52,9 +61,20 @@ class Request
|
||||||
return $this->remoteAddress;
|
return $this->remoteAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string The request ID of the current request
|
||||||
|
*
|
||||||
|
* Do always use this instead of $_SERVER['X_REQUEST_ID']
|
||||||
|
*/
|
||||||
|
public function getRequestId(): string
|
||||||
|
{
|
||||||
|
return $this->requestId;
|
||||||
|
}
|
||||||
|
|
||||||
public function __construct(IManageConfigValues $config, array $server = [])
|
public function __construct(IManageConfigValues $config, array $server = [])
|
||||||
{
|
{
|
||||||
$this->remoteAddress = $this->determineRemoteAddress($config, $server);
|
$this->remoteAddress = $this->determineRemoteAddress($config, $server);
|
||||||
|
$this->requestId = $server[static::DEFAULT_REQUEST_ID_HEADER] ?? System::createGUID(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
namespace Friendica\Core\Logger\Util;
|
namespace Friendica\Core\Logger\Util;
|
||||||
|
|
||||||
|
use Friendica\App\Request;
|
||||||
use Friendica\Core\Logger\Capabilities\IHaveCallIntrospections;
|
use Friendica\Core\Logger\Capabilities\IHaveCallIntrospections;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,6 +29,9 @@ use Friendica\Core\Logger\Capabilities\IHaveCallIntrospections;
|
||||||
*/
|
*/
|
||||||
class Introspection implements IHaveCallIntrospections
|
class Introspection implements IHaveCallIntrospections
|
||||||
{
|
{
|
||||||
|
/** @var string */
|
||||||
|
private $requestId;
|
||||||
|
|
||||||
/** @var int */
|
/** @var int */
|
||||||
private $skipStackFramesCount;
|
private $skipStackFramesCount;
|
||||||
|
|
||||||
|
@ -43,8 +47,9 @@ class Introspection implements IHaveCallIntrospections
|
||||||
* @param string[] $skipClassesPartials An array of classes to skip during logging
|
* @param string[] $skipClassesPartials An array of classes to skip during logging
|
||||||
* @param int $skipStackFramesCount If the logger should use information from other hierarchy levels of the call
|
* @param int $skipStackFramesCount If the logger should use information from other hierarchy levels of the call
|
||||||
*/
|
*/
|
||||||
public function __construct(array $skipClassesPartials = [], int $skipStackFramesCount = 0)
|
public function __construct(Request $request, array $skipClassesPartials = [], int $skipStackFramesCount = 0)
|
||||||
{
|
{
|
||||||
|
$this->requestId = $request->getRequestId();
|
||||||
$this->skipClassesPartials = $skipClassesPartials;
|
$this->skipClassesPartials = $skipClassesPartials;
|
||||||
$this->skipStackFramesCount = $skipStackFramesCount;
|
$this->skipStackFramesCount = $skipStackFramesCount;
|
||||||
}
|
}
|
||||||
|
@ -77,9 +82,10 @@ class Introspection implements IHaveCallIntrospections
|
||||||
$i += $this->skipStackFramesCount;
|
$i += $this->skipStackFramesCount;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'file' => isset($trace[$i - 1]['file']) ? basename($trace[$i - 1]['file']) : null,
|
'file' => isset($trace[$i - 1]['file']) ? basename($trace[$i - 1]['file']) : null,
|
||||||
'line' => $trace[$i - 1]['line'] ?? null,
|
'line' => $trace[$i - 1]['line'] ?? null,
|
||||||
'function' => $trace[$i]['function'] ?? null,
|
'function' => $trace[$i]['function'] ?? null,
|
||||||
|
'request-id' => $this->requestId,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue