khalyomede / syslog
登录到您的Syslog目标
Requires
- php: >=7.0.0
- khalyomede/prototype: 1.*
- khalyomede/syslog-interface: 1.*
- psr/log: 1.*
Requires (Dev)
- phpspec/phpspec: 4.*
This package is auto-updated.
Last update: 2024-09-29 05:21:08 UTC
README
登录到您的Syslog目标。
$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版本 >= 7.0.0
- 启用套接字扩展(在Windows上是
php_sockets.dll
,在Linux发行版上是php_sockets.so
) - 接受UDP数据包消息的日志服务器(因为此库通过UDP发送日志)
安装
在您的项目文件夹中
composer require khalyomede/syslog:1.*
使用示例
所有示例都可以在/example
文件夹中找到。
示例1:登录到日志目标
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");
示例2:对日志消息进行模板化
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']);
示例3:使用通用方法进行日志记录
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");
如果您不想传递LogLevel
类的常量,可以提供一个字符串
$log->log('error' 'the user could not be created because: this username already exists');
请注意,信息严重性字符串等效项是info
。
示例4:使用通用日志记录时进行模板化
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']);
示例5:在日志记录前强制设置日期
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');
示例6:指定下一个日志的标识符
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.");
标识符将附加到您的下一个日志。如果您想在某个时刻清除它,可以使用
$log->deleteIdentifier();
它返回一个Khalyomede\Syslog
实例,因此您可以与任何其他方法链式调用。
方法定义
警告
将消息发送到日志目标,带有警告严重性。
public function alert(string $message, array $context = []): Syslog
注意
上下文的键应遵守以下格式:小写,数字,只包含下划线和点。
异常
InvalidArgumentException
:
- 如果消息为空
- 如果上下文不包含键值对的数组
- 如果上下文中的一个键格式不正确
LogicException
:
- 如果以下属性之一未填写:主机、端口、源、设备、进程
RuntimeException
:
- 如果套接字创建失败
- 如果无法通过套接字连接发送消息
临界
将消息发送到日志目标,带有临界严重性。
public function critical(string $message, array $context = []): Syslog
注意
上下文的键应遵守以下格式:小写,数字,只包含下划线和点。
异常
InvalidArgumentException
:
- 如果消息为空
- 如果上下文不包含键值对的数组
- 如果上下文中的一个键格式不正确
LogicException
:
- 如果以下属性之一未填写:主机、端口、源、设备、进程
RuntimeException
:
- 如果套接字创建失败
- 如果无法通过套接字连接发送消息
日期
强制日志以特定日期进行时间戳。
public function date(DateTime $date): Syslog
注意
如果您不在每个日志调用中调用此方法,日期将被设置为调用sysloger的时间。
调试
将消息发送到日志目标,带有调试严重性。
public function debug(string $message, array $context = []): Syslog
注意
上下文的键应遵守以下格式:小写,数字,只包含下划线和点。
异常
InvalidArgumentException
:
- 如果消息为空
- 如果上下文不包含键值对的数组
- 如果上下文中的一个键格式不正确
LogicException
:
- 如果以下属性之一未填写:主机、端口、源、设备、进程
RuntimeException
:
- 如果套接字创建失败
- 如果无法通过套接字连接发送消息
删除标识符
重置标识符为其空值。
public function deleteIdentifier(): Syslog
设备
设置发送日志的设备的名称。有关更多信息,请参阅Syslog RFC5424文档中此属性的说明。
public function device(string $device): Syslog
紧急
将消息发送到日志目标,带有紧急严重性。
public function emergency(string $message, array $context = []): Syslog
注意
上下文的键应遵守以下格式:小写,数字,只包含下划线和点。
异常
InvalidArgumentException
:
- 如果消息为空
- 如果上下文不包含键值对的数组
- 如果上下文中的一个键格式不正确
LogicException
:
- 如果以下属性之一未填写:主机、端口、源、设备、进程
RuntimeException
:
- 如果套接字创建失败
- 如果无法通过套接字连接发送消息
错误
将消息发送到日志目标,带有错误严重性。
public function error(string $message, array $context = []): Syslog
注意
上下文的键应遵守以下格式:小写,数字,只包含下划线和点。
异常
InvalidArgumentException
:
- 如果消息为空
- 如果上下文不包含键值对的数组
- 如果上下文中的一个键格式不正确
LogicException
:
- 如果以下属性之一未填写:主机、端口、源、设备、进程
RuntimeException
:
- 如果套接字创建失败
- 如果无法通过套接字连接发送消息
设施
设置目标平台。有关更多信息,请参阅Syslog RFC5424文档中此属性的说明。
public function facility(int $facility): Syslog
主机
设置目标日志目标主机。
public function host(string $host): Syslog
注意
该值应是一个IP或有效的域名。
标识符
设置一个可选的标识符以分组您的日志。
public function source(string $source): Syslog
信息
将消息发送到日志目标,带有信息严重性。
public function info(string $message, array $context = []): Syslog
注意
上下文的键应遵守以下格式:小写,数字,只包含下划线和点。
异常
InvalidArgumentException
:
- 如果消息为空
- 如果上下文不包含键值对的数组
- 如果上下文中的一个键格式不正确
LogicException
:
- 如果以下属性之一未填写:主机、端口、源、设备、进程
RuntimeException
:
- 如果套接字创建失败
- 如果无法通过套接字连接发送消息
日志
使用可选严重性参数进行日志记录。这与任何其他严重性日志方法具有相同的效果。
public function log(string $level, string $message, array $context = []): Syslog
注意
上下文的键应遵守以下格式:小写,数字,只包含下划线和点。
异常
InvalidArgumentException
:
- 如果严重性为空
- 如果严重性不是以下之一:紧急、警告、关键、错误、警告、通知、信息、调试
- 如果消息为空
- 如果上下文不包含键值对的数组
- 如果上下文中的一个键格式不正确
LogicException
:
- 如果以下属性之一未填写:主机、端口、源、设备、进程
RuntimeException
:
- 如果套接字创建失败
- 如果无法通过套接字连接发送消息
注意
将消息发送到日志目标,以通知严重性。
public function notice(string $message, array $context = []): Syslog
注意
上下文的键应遵守以下格式:小写,数字,只包含下划线和点。
异常
InvalidArgumentException
:
- 如果消息为空
- 如果上下文不包含键值对的数组
- 如果上下文中的一个键格式不正确
LogicException
:
- 如果以下属性之一未填写:主机、端口、源、设备、进程
RuntimeException
:
- 如果套接字创建失败
- 如果无法通过套接字连接发送消息
端口
设置日志目标服务器地址的端口号。
public function port(int $port): Syslog
进程
设置负责此日志的原始进程。有关更多信息,请参阅Syslog RFC5424文档中此属性的定义。
public function processus(string $processus): Syslog
源
设置生成此日志的原始服务器。有关更多信息,请参阅Syslog RFC5424文档中此属性的定义。
public function source(string $source): Syslog
警告
将消息发送到日志目标,以警告严重性。
public function warning(string $message, array $context = []): Syslog
注意
上下文的键应遵守以下格式:小写,数字,只包含下划线和点。
异常
InvalidArgumentException
:
- 如果消息为空
- 如果上下文不包含键值对的数组
- 如果上下文中的一个键格式不正确
LogicException
:
- 如果以下属性之一未填写:主机、端口、源、设备、进程
RuntimeException
:
- 如果套接字创建失败
- 如果无法通过套接字连接发送消息
原型准备就绪
此类允许您根据需要扩展其功能,而无需深入源代码。例如
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');
有关更多信息,请参阅khalyomede/prototype文档。