6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

シーエー・アドバンスAdvent Calendar 2018

Day 4

Slackへ飛ばしてるエラーログが見にくいので、attachmentsをうまく使って、見やすくした

Last updated at Posted at 2018-12-03

Slackのattachmentsとは

下記の記事でもご説明されていますが、要はSlack上のメッセージを見やすくしてくれるものということです。

見にくいってどんな感じ?

担当してるシステムでエラーが発生してログが吐かれるとき、毎度ログファイルを見るのがめんど(y・・・だったので、もうエラーが起きてるんだったらすぐ確認できるところに飛ばしてくれ :exclamation:
ってことで、Slackへ飛ばすようにしたのですが、 :arrow_down:のように、 メッセージ内容が長いと「Show more」が出て一目で全体を確認できない感じになるんです・・・ :cry:
あ、ちなみにSlackへのログの送信については下記を利用しました。

bastille-dev-alert _ ca-advance Slack (1).jpg

これだと、エラーログ飛んできても中身見るために、全てのShow moreをクリックして確認しなければならず、

はっきり言って見づらい!!! :angry:

本番でエラー起きた時に、これで復旧にその分時間かかっちゃう :cry:

これじゃダメだ・・・ってことで、Slackのattachmentsの使い方をもう少しちゃんと調べました。 :eyes:

Slack attachmentでは、パラメータの中に fields という項目があり、1つのattachment内で表示するメッセージを項目毎に整形することができることがわかりました。
上記エラーログを見てもわかるとおり、エラーログに出力している内容は、この fields パラメータを利用して、項目毎にわけることができそうだということで、
ログへのメッセージの送信を下記のように変更しました。

fuel/app/classes/log.php
$msg_content = "送信メッセージ内容";
+ $fields = [
+            ['title' => 'HOST', 'value' => $host, 'short' => true]
+        ,['title' => 'URI', 'value' => $_uri_seg, 'short' => true]
+        ,['title' => 'TIME', 'value' => $dateTime, 'short' => true]
+        ,['title' => 'USER_INFO', 'value' => $_user_id.' '.$_user_name, 'short' => true]
+        ,['title' => 'APP_INFO', 'value' => $_app_id.' '.$_app_name, 'short' => true]
+        ,['title' => 'MESSAGE', 'value' => $msg, 'short' => false]
+ ];

// Required. The message body. 10,000 characters max.
$msg_slack = ($notify === true ? '@here: ' : '') . PHP_EOL;
try {
    // Instantiate without defaults
    $client = new \Maknz\Slack\Client($hook_url);
    $client->setLinkNames($notify);
    $client->setUnfurlLinks(true);
    $client->setUnfurlMedia(true);
    $client->to($channel)->attach([
        'fallback' => $msg_slack,
        'text' => $msg_slack,
        'color' => $color,
+        'fields' => $fields
    ])->send('');
} catch (Exception $e) {
}

こう変更することで、HOST,URI,TIME,MESSAGEなど全てが fields として送信されることとなります。
結果、Slackへのログの送信結果は、こう変わりました :exclamation: :arrow_down: :arrow_down: :arrow_down:

bastille-dev-alert _ InfoSys for CyberAgent Slack.jpg

メッセージ内容はぼかしていますが、かなり長いメッセージでも「Show more」は出なくなり、エラーの内容の確認がめちゃくちゃ楽になりました :dash:
これで 開発もしやすい本番障害時のエラーログの確認 も捗りますね :smile:
意外と困っている方いらっしゃるんじゃないでしょうか :question: みなさんの開発の助けにでもなれば幸いです :bow:
もっとこうすると良くなるよー!といったコメントもお待ちしています。 :ear:

6
4
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
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?