LoginSignup
22
21

More than 5 years have passed since last update.

PHPからFluentdにログを投げるためのライブラリを作りました。

Last updated at Posted at 2015-04-25

(追記)
この記事でやった内容は、本家のfluent-logger-phpに取り込まれました。
https://github.com/fluent/fluent-logger-php

なので本記事はもう役に立たないです。
一応消すのもアレなので残しておきます。
(追記ここまで)


:作ったというよりcloneして改良しただけです)

dqneo/fluent-simpleloggerという、PHPからFluentdにログを投げるためのライブラリをpackagistで公開しました。

https://packagist.org/packages/dqneo/fluent-simplelogger
https://github.com/DQNEO/php-fluent-simplelogger

インストール方法

下記のようなファイルを用意してcomposer installすればOKです。

composer.json
{
    "require": {
        "dqneo/fluent-simplelogger": "0.0.4"
    }
}

使い方

本家fluent-logger-phpと全く同じです。

DQNEO\Fluent\LoggerクラスはFluent\Logger\FluentLoggerと仕様が同じなので差し替えて使うことができます。(実装が同じなので速度も同じです。)

<?php
require_once __DIR__ . '/vendor/autoload.php';

use DQNEO\Fluent\Logger;

# FluentdにTCPで接続する場合
$logger = new Logger("localhost","24224");

# FluentdにUnix Domain Socketで接続する場合(こちらの方が高速)
$logger = new Logger("unix:///var/run/td-agent/td-agent.sock");
$logger->post("debug.test", ["hello"=>"world"]);

メリットがあるとすると、PSR-4に対応してるので vendor/autoload.phpを読みこむだけで済むところです。

作った背景

既存の(本家?)ライブラリで https://github.com/fluent/fluent-logger-php という素晴らしいプロダクトがあり、便利に使わせもらっていました。

これはこれで便利で安定していて何も問題はないのですが、PSR-4に対応していなかったのと、自分が使わなそうなクラスファイルが多数あったので、もうちょっと抽象度の低くて薄いやつが欲しいなと思っていました。
例えばConsoleLogger,FileLogger,HttpLoggerというクラスがあって、ログをFluentdに送る代わりに出力先を標準出力やファイルやHTTPサーバに切り替える、ということができるのですが、今どきはこういう用途なら monolog/monolog を使えばいいかなと。

なのでFluentdと関係のないクラスを思い切って削除しました。
あとabstractクラスとかInterfaceも廃止して具象クラスに統合しました。

結果、クラスファイルが4つになってだいぶ見通しがよくなったと思います。

謝辞

もとのライブラリを作ったchobi_eさんとsotarokさん、その他メンテナのみなさんに感謝いたします。

22
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
21