Log into your Syslog destination.
$log->host('some.vendor.com')
->port(92883)
->facility(22)
->source('my.company.io')
->device('website')
->processus('price-index');
$log->debug('page loaded in 3.840 s');
- PHP version >= 7.0.0
- Socket extension enabled (
php_sockets.dll
on windows orphp_sockets.so
on Linux distributions) - A log server that accepts UDP packet messages (as this library send the log through UDP)
In your project folder:
composer require khalyomede/syslog:1.*
All the examples can be found in the /example
folder.
- Example 1: logging into your log destination
- Example 2: templatize your message for logging
- Example 3: use a generic method for logging
- Example 4: templatize when using the generic logging
- Example 5: force the date before logging
- Example 6: specify an indentifier for your next logs
use Khalyomede\Syslog;
$log = new Syslog;
$log->host('log.test.com')
->port(12345)
->facility(22)
->source('test.test.com')
->device('test-website')
->processus('test-home');
$log->debug("user created in 5ms");
use Khalyomede\Syslog;
$log = new Syslog;
$log->host('log.test.com')
->port(12345)
->facility(22)
->source('test.test.com')
->device('test-website')
->processus('test-home');
$message = "user {username} created successfuly";
$log->info($message, ['username' => 'johndoe']);
use Khalyomede\Syslog;
use Psr\Log\LogLevel;
$log = new Syslog;
$log->host('log.test.com')
->port(12345)
->facility(22)
->source('test.test.com')
->device('test-website')
->processus('test-home');
$log->log(LogLevel::ERROR, "the user could not be created because: this username already exists");
If you do not want to pass through the class constants of LogLevel
, you can provide a string instead:
$log->log('error' 'the user could not be created because: this username already exists');
Beware that the informational severity string equivalent is info
.
use Khalyomede\Syslog;
use Psr\Log\LogLevel;
$log = new Syslog;
$log->host('log.test.com')
->port(12345)
->facility(22)
->source('test.test.com')
->device('test-website')
->processus('test-home');
$message = "user {username} created successfuly";
$log->log(LogLevel::ERROR, $message, ['username' => 'johndoe']);
use Khalyomede\Syslog;
$log = new Syslog;
$log->host('log.test.com')
->port(12345)
->facility(22)
->source('test.test.com')
->device('test-website')
->processus('test-home')
->date(new DateTime('2017-11-29 04:34:09', new DateTimeZone('Europe/Paris')));
$log->emergency('detected forbidden access to database');
use Khalyomede\Syslog;
$log = new Syslog;
$log->host('log.test.com')
->port(12345)
->facility(22)
->source('test.test.com')
->device('test-website')
->processus('test-home')
->identifier('AZXT6');
$log->debug("database optimized in 33.09 s.");
The identifier will stick to your next logs. If you would like to clear it at a point, you can use:
$log->deleteIdentifier();
It returns an instance of Khalyomede\Syslog
so you can chain it with any other method.
alert
critical
date
debug
deleteIdentifier
device
emergency
error
facility
host
identifier
info
log
notice
port
processus
source
warning
Sends a message to the log destination with an alert severity.
public function alert(string $message, array $context = []): Syslog
Note
The keys of the context should respect the following format: lower case, numbers, with underscores and periods only.
Exception
InvalidArgumentException
:
- If the message is empty
- If the context does not contains an array of key-pairs values
- If one of the context keys is not properly formated
LogicException
:
- If one of the following properties are not filled: host, post, source, device, processus
RuntimeException
:
- If the socket creation failed
- If the message could not be sent through the socket connection
Sends a message to the log destination with a critical severity.
public function critical(string $message, array $context = []): Syslog
Note
The keys of the context should respect the following format: lower case, numbers, with underscores and periods only.
Exception
InvalidArgumentException
:
- If the message is empty
- If the context does not contains an array of key-pairs values
- If one of the context keys is not properly formated
LogicException
:
- If one of the following properties are not filled: host, post, source, device, processus
RuntimeException
:
- If the socket creation failed
- If the message could not be sent through the socket connection
Force the log to be timestamped to a specific date.
public function date(DateTime $date): Syslog
Note
If you do not call this method at each log call, the date will be set to the time at which you call the sysloger.
Sends a message to the log destination with a debug severity.
public function debug(string $message, array $context = []): Syslog
Note
The keys of the context should respect the following format: lower case, numbers, with underscores and periods only.
Exception
InvalidArgumentException
:
- If the message is empty
- If the context does not contains an array of key-pairs values
- If one of the context keys is not properly formated
LogicException
:
- If one of the following properties are not filled: host, post, source, device, processus
RuntimeException
:
- If the socket creation failed
- If the message could not be sent through the socket connection
Reset the identifier to its empty value.
public function deleteIdentifier(): Syslog
Set the name of the device that is sending the log. For more information, see the definition of this attribute on the Syslog RFC5424 documentation.
public function device(string $device): Syslog
Sends a message to the log destination with an emergency severity.
public function emergency(string $message, array $context = []): Syslog
Note
The keys of the context should respect the following format: lower case, numbers, with underscores and periods only.
Exception
InvalidArgumentException
:
- If the message is empty
- If the context does not contains an array of key-pairs values
- If one of the context keys is not properly formated
LogicException
:
- If one of the following properties are not filled: host, post, source, device, processus
RuntimeException
:
- If the socket creation failed
- If the message could not be sent through the socket connection
Sends a message to the log destination with an error severity.
public function error(string $message, array $context = []): Syslog
Note
The keys of the context should respect the following format: lower case, numbers, with underscores and periods only.
Exception
InvalidArgumentException
:
- If the message is empty
- If the context does not contains an array of key-pairs values
- If one of the context keys is not properly formated
LogicException
:
- If one of the following properties are not filled: host, post, source, device, processus
RuntimeException
:
- If the socket creation failed
- If the message could not be sent through the socket connection
Set the target plateform. For more information, see the definition of this attribute on the Syslog RFC5424 documentation.
public function facility(int $facility): Syslog
Set the target log destination host.
public function host(string $host): Syslog
Note
The value should be an IP or a valid domain.
Set an optional identifier to group your logs.
public function source(string $source): Syslog
Sends a message to the log destination with an info severity.
public function info(string $message, array $context = []): Syslog
Note
The keys of the context should respect the following format: lower case, numbers, with underscores and periods only.
Exception
InvalidArgumentException
:
- If the message is empty
- If the context does not contains an array of key-pairs values
- If one of the context keys is not properly formated
LogicException
:
- If one of the following properties are not filled: host, post, source, device, processus
RuntimeException
:
- If the socket creation failed
- If the message could not be sent through the socket connection
Log using an opt-in severity parameter. This has the same effect than any other others severity logging methods.
public function log(string $level, string $message, array $context = []): Syslog
Note
The keys of the context should respect the following format: lower case, numbers, with underscores and periods only.
Exception
InvalidArgumentException
:
- If the severity is empty
- If the severity is not one of the following: emergency, alert, critical, error, warning, notice, info, debug
- If the message is empty
- If the context does not contains an array of key-pairs values
- If one of the context keys is not properly formated
LogicException
:
- If one of the following properties are not filled: host, post, source, device, processus
RuntimeException
:
- If the socket creation failed
- If the message could not be sent through the socket connection
Sends a message to the log destination with a notice severity.
public function notice(string $message, array $context = []): Syslog
Note
The keys of the context should respect the following format: lower case, numbers, with underscores and periods only.
Exception
InvalidArgumentException
:
- If the message is empty
- If the context does not contains an array of key-pairs values
- If one of the context keys is not properly formated
LogicException
:
- If one of the following properties are not filled: host, post, source, device, processus
RuntimeException
:
- If the socket creation failed
- If the message could not be sent through the socket connection
Set the port of the log destination server address.
public function port(int $port): Syslog
Set the original processus that is responsible for this log. For more information, see the definition of this attribute on the Syslog RFC5424 documentation.
public function processus(string $processus): Syslog
Set the original server that generated this log. For more information, see the definition of this attribute on the Syslog RFC5424 documentation.
public function source(string $source): Syslog
Sends a message to the log destination with a warning severity.
public function warning(string $message, array $context = []): Syslog
Note
The keys of the context should respect the following format: lower case, numbers, with underscores and periods only.
Exception
InvalidArgumentException
:
- If the message is empty
- If the context does not contains an array of key-pairs values
- If one of the context keys is not properly formated
LogicException
:
- If one of the following properties are not filled: host, post, source, device, processus
RuntimeException
:
- If the socket creation failed
- If the message could not be sent through the socket connection
This class lets you extend its functionality to your needs without having to dive into the source code. For example:
use Khalyomede\Syslog;
$log = new Syslog;
$log->prototype('oneHourAgo', function() {
$this->date->sub(new DateInterval('PT1H'));
return $this;
});
$log->host('log.test.com')
->port(12345)
->facility(22)
->source('test.test.com')
->device('test-website')
->processus('test-home')
->date(new DateTime)
->oneHourAgo();
$log->info('test');
For more information, check khalyomede/prototype documentation.