khalyomede/syslog
Composer 安装命令:
composer require khalyomede/syslog
包简介
Log into your Syslog destination
README 文档
README
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');
Summary
Prerequistes
- PHP version >= 7.0.0
- Socket extension enabled (
php_sockets.dllon windows orphp_sockets.soon Linux distributions) - A log server that accepts UDP packet messages (as this library send the log through UDP)
Installation
In your project folder:
composer require khalyomede/syslog:1.*
Examples of uses
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
Example 1: logging into your log destination
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");
Example 2: templatize your message for logging
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']);
Example 3: use a generic method for logging
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.
Example 4: templatize when using the generic logging
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']);
Example 5: force the date before logging
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');
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') ->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.
Methods definitions
alertcriticaldatedebugdeleteIdentifierdeviceemergencyerrorfacilityhostidentifierinfolognoticeportprocessussourcewarning
alert
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
critical
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
date
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.
debug
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
deleteIdentifier
Reset the identifier to its empty value.
public function deleteIdentifier(): Syslog
device
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
emergency
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
error
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
facility
Set the target plateform. For more information, see the definition of this attribute on the Syslog RFC5424 documentation.
public function facility(int $facility): Syslog
host
Set the target log destination host.
public function host(string $host): Syslog
Note
The value should be an IP or a valid domain.
identifier
Set an optional identifier to group your logs.
public function source(string $source): Syslog
info
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
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
notice
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
port
Set the port of the log destination server address.
public function port(int $port): Syslog
processus
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
source
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
warning
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
Prototype ready
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.
khalyomede/syslog 适用场景与选型建议
khalyomede/syslog 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 12 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 03 月 31 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 khalyomede/syslog 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 khalyomede/syslog 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 12
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-03-31