Stackify Log API for PHP
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/Stackify
.gitattributes
.gitignore
LICENSE
README.md
composer.json

README.md

stackify-api-php

PHP version

Common libraries for Stackify Monolog handler and Stackify log4php appender. This package also includes a standalone PSR-3 compatible logger that can be used without third-party libraries.

Errors and Logs Overview:

http://support.stackify.com/errors-and-logs-overview/

Smarter Errors & Logs for PHP:

http://stackify.com/smarter-errors-logs-php/

Sign Up for a Trial:

http://www.stackify.com/sign-up/

Installation

Install the latest version with composer require stackify/logger

There are three different transport options that can be configured to send data to Stackify. Below will show how to implement the different transport options.

ExecTransport

ExecTransport does not require a 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);

Optional Settings

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);

CurlTransport

CurlTransport does not require a Stackify agent to be installed and it also sends data directly to Stackify services. It collects log entries in a single batch and sends data using native PHP cURL functions. This way is a blocking one, so it should not be used on production environments. To configure CurlTransport you need to pass environment name and API key (license key):

use Stackify\Log\Transport\CurlTransport;
use Stackify\Log\Standalone\Logger;
    
$transport = new CurlTransport('api_key');
$logger = new Logger('application_name', 'environment_name', $transport);

Optional Settings

Proxy

  • CurlTransport supports data delivery through proxy. Specify proxy using libcurl format: <[protocol://][user:password@]proxyhost[:port]>
$transport = new CurlTransport($apiKey, ['proxy' => 'https://55.88.22.11:3128']);

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);

AgentTransport

AgentTransport does not require additional configuration in your PHP code because all data is passed to the Stackify agent. The agent must be installed on the same machine. Local TCP socket on port 10515 is used, so performance of your application is affected minimally.

use Stackify\Log\Standalone\Logger;

$logger = new Logger('application_name', 'environment_name');

You will need to enable the TCP listener by checking the "PHP App Logs (Agent Log Collector)" in the server settings page in Stackify. See Log Collectors Page for more details.

Optional Settings

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', null, true);

Troubleshooting

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]);

License

Copyright 2018 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.