Standalone Stackify PHP PSR-3 Logger.
- Errors and Logs Overview: http://support.stackify.com/errors-and-logs-overview/
- Sign Up for a Trial: http://www.stackify.com/sign-up/
- Monolog Handler: https://github.com/stackify/stackify-log-monolog
- log4php Appender: https://github.com/stackify/stackify-log-log4php
Install the latest version with composer require stackify/logger
This is the suggested installation option, offering the best logging performance.
use Stackify\Log\Standalone\Logger;
$logger = new Logger('application_name', 'environment_name');
This option does not require the Stackify Agent to be installed because it sends data directly to Stackify services. It collects log entries in batches, calls curl using the exec
function, and sends data to the background immediately [exec('curl ... &')
]. This will affect the performance of your application minimally, but it requires permissions to call exec
inside the PHP script and it may cause silent data loss in the event of any network issues. This transport method does not work on Windows. To configure ExecTransport you need to pass the environment name and API key (license key):
use Stackify\Log\Transport\ExecTransport;
use Stackify\Log\Standalone\Logger;
$transport = new ExecTransport('api_key');
$logger = new Logger('application_name', 'environment_name', $transport);
Proxy
- ExecTransport supports data delivery through proxy. Specify proxy using libcurl format:
<[protocol://][user:password@]proxyhost[:port]>
$transport = new ExecTransport($apiKey, ['proxy' => 'https://55.88.22.11:3128']);
Curl path
- It can be useful to specify
curl
destination path for ExecTransport. This option is set to 'curl' by default.
$transport = new ExecTransport($apiKey, ['curlPath' => '/usr/bin/curl']);
Log Server Environment Variables
- Server environment variables can be added to error log message metadata. Note: This will log all system environment variables; do not enable if sensitive information such as passwords or keys are stored this way.
$logger = new Logger('application_name', 'environment_name', $transport, true);
- This allow users to override default settings of the logger (Masking Request Variables, Session, Cookie or Updating connection properties to different Transports etc.)
- Note - By default capturing raw post data
(e.g. file_get_contents("php://input"))
and$_POST
variables areDISABLED
by default- To enable you can set the following options to
true
CapturePostVariables
-Boolean
- Capture$_POST
variablesCaptureRawPostData
-Boolean
- Capturephp://input
stream data(e.g. file_get_contents("php://input"))
$config = array( 'CapturePostVariables' => true, 'CaptureRawPostData' => true, ... );
- To enable you can set the following options to
- Note - For the
Whitelist/Blackist
setting. Anythingfalsy
(null
,false
,array()
etc. - Refer to php empty function checking) will be considered asDo Not Track
- No variable data will be processed.
$config = array(
'CaptureServerVariables' => false,
'CaptureServerVariablesWhitelist' => '*',
'CaptureServerVariablesBlacklist' => 'REMOTE_ADDR,SERVER_ADDR',
...
);
$logger = new Logger('application_name', 'environment_name', $transport, true, $config);
- This applies to all the transports
(ExecTransport, CurlTransport, AgentTransport, AgentSocketTransport)
$config = array(
'CaptureServerVariables' => false,
'CaptureServerVariablesWhitelist' => '*',
'CaptureServerVariablesBlacklist' => 'REMOTE_ADDR,SERVER_ADDR',
...
);
$transport = new ExecTransport($apiKey, [
'config' => $config
]);
CaptureServerVariables
-Boolean
- Capture$_SERVER
variablesCaptureServerVariablesWhitelist
-Array
orComma-delimited string
- Whitelist$_SERVER
attributesCaptureServerVariablesBlacklist
-Array
orComma-delimited string
- Mask$_SERVER
attributes (e.g.attribute => 'X-MASKED-X'
)
CaptureGetVariables
-Boolean
- Capture$_GET
variablesCaptureGetVariablesWhitelist
-Array
orComma-delimited string
- Whitelist$_GET
attributesCaptureGetVariablesBlacklist
-Array
orComma-delimited string
- Mask$_GET
attributes (e.g.attribute => 'X-MASKED-X'
)
CapturePostVariables
-Boolean
- Capture$_POST
variablesCapturePostVariablesWhitelist
-Array
orComma-delimited string
- Whitelist$_POST
attributesCapturePostVariablesBlacklist
-Array
orComma-delimited string
- Mask$_POST
attributes (e.g.attribute => 'X-MASKED-X'
)
CaptureSessionVariables
-Boolean
- Capture$_SESSION
variablesCaptureSessionVariablesWhitelist
-Array
orComma-delimited string
- Whitelist$_SESSION
attributesCaptureSessionVariablesBlacklist
-Array
orComma-delimited string
- Mask$_SESSION
attributes (e.g.attribute => 'X-MASKED-X'
)
CaptureErrorHeaders
-Boolean
- CaptureHEADER
attributes available in$_SERVER
variableCaptureErrorHeadersWhitelist
-Array
orComma-delimited string
- WhitelistHEADER
attributes in$_SERVER
variableCaptureErrorHeadersBlacklist
-Array
orComma-delimited string
- MaskHEADER
attributes in$_SERVER
variable (e.g.attribute => 'X-MASKED-X'
)
CaptureErrorCookies
-Boolean
- Capture$_COOKIE
variablesCaptureErrorCookiesWhitelist
-Array
orComma-delimited string
- Whitelist$_COOKIE
attributesCaptureErrorCookiesBlacklist
-Array
orComma-delimited string
- Mask$_COOKIE
attributes
CaptureRawPostData
-Boolean
- Capturephp://input
stream data(e.g. file_get_contents("php://input"))
Debug
-Boolean
- Enable DEBUG in the loggerDebugLogPath
-String
- A qualified path for the log file produced during debug or error
Protocol
-String
- Protocol can betcp
orudp
Host
-String
- Server HostnamePort
-Numeric
- PortSocketTimeoutConnect
-Numeric
- Connection Request TimeoutSocketTimeoutWrite
-Numeric
- Connection Write TimeoutSocketMaxConnectAttempts
-Numeric
- Connection Attempts
DomainSocketPath
-String
- Stackify Agent unix socket path
ApiBaseUrl
-String
- Stackify API base urlApiCallLogsEndpoint
-String
- Stackify API Call Logs endpointApiMaxTimeout
-Numeric
- Stackify API Call Max TimeoutApiVersionHeader
-String
- Stackify API Version Header
If transport does not work, try looking into vendor\stackify\logger\src\Stackify\debug\log.log
file (if it is available for writing). Errors are also written to global PHP error_log.
Note that ExecTransport does not produce any errors at all, but you can switch it to debug mode:
$transport = new ExecTransport($apiKey, ['debug' => true]);
You can set it also on the Logger
level. Setting the Debug
and DebugLogPath
$config = array(
'DebugLogPath' => '/path/to/log.log',
'Debug' => true
);
$logger = new Logger('application_name', 'environment_name', $transport, true, $config);
Real user monitoring injects a script tag containing the RUM JS that is responsible for capturing information about the http requests on the browser. This approach is manual and needs to be configured.
/** Requires composer **/
$applicationName = 'Your Application Name';
$environment = 'YourEnvironment';
$rumKey = 'YourRumKey';
\Stackify\Utils\Rum::getInstance()->setupConfiguration(
$applicationName,
$environment,
$rumKey
);
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<?php echo \Stackify\Utils\Rum::getInstance()->insertRumScript(); ?>
<title>Title</title>
</head>
...
Copyright 2019 Stackify, LLC.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.