khalyomede/syslog

登录到您的Syslog目标

v1.0.0 2018-03-31 14:57 UTC

This package is auto-updated.

Last update: 2024-09-29 05:21:08 UTC


README

PHP from Packagist Packagist Packagist

登录到您的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文档。