khalyomede/syslog 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

khalyomede/syslog

Composer 安装命令:

composer require khalyomede/syslog

包简介

Log into your Syslog destination

README 文档

README

PHP from Packagist Packagist Packagist

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.dll on windows or php_sockets.so on 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

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

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 我们能提供哪些服务?
定制开发 / 二次开发

基于 khalyomede/syslog 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 12
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 9
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-03-31