codegym/laravel-slack-output

当您的 Laravel 应用程序出现问题时,向 Slack 发送消息。

v1.2.1 2018-04-04 02:01 UTC

This package is auto-updated.

Last update: 2024-09-16 23:12:38 UTC


README

将您的 Laravel 应用程序的消息发送到 Slack

此包提供

  • 后命令

    使用 Laravel 命令向 Slack 发送消息。

  • 统计命令

    使用此可定制的命令发送有关您的 Laravel 应用的统计信息。

  • 异常处理器

    当异常发生时,输出有关异常的有用信息到 Slack。

  • 失败作业处理器

    当作业失败时收到警报。

  • 计划命令报告

    关注您计划命令的结果。

要求

  • Laravel 5.1 或更高版本
  • PHP 5.5.9 或更高版本

安装

您可以使用 Composer 包管理器安装此包。您可以在项目根目录中运行以下命令进行安装

composer require codegym/laravel-slack-output

您需要在您的 Laravel 应用程序中包含服务提供者和外观。

config/app.php 中的 providers 数组中添加服务提供者

'providers' => [
  ...
  CodeGym\SlackOutput\ServiceProvider::class,
],

然后将外观添加到您的 aliases 数组中

'aliases' => [
  ...
  'SlackOutput' => CodeGym\SlackOutput\Facade\SlackOutput::class,
],

使用

php artisan vendor:publish --provider="CodeGym\SlackOutput\ServiceProvider"

您需要将 webhook URL 添加到配置文件中,以便包能够向 Slack 发布。在您的 Slack 账户上 创建一个传入 webhook。复制 webhook URL 并打开 config/slack-output.php,将 webhook URL 设置为 endpoint

如果任何设置为 null,则包将回退到 webhook 设置的默认设置。

使用方法

后命令

命令 slack:post 将消息发布到 Slack。它可以接受以下参数

  • message: 要发送的消息
  • to: 要发布到的频道或人员
  • attach: 附件有效负载

您可以在这里找到有关 attach 参数的信息:https://api.slack.com/docs/attachments

您可以通过运行以下命令来调用它

php artisan slack:post "Hello, I'm a bot" #channel

您也可以在您的 Laravel 应用程序中调用它

Artisan::call('slack:post', [
  'to' => "#api-output",
  'attach' => $someAttachment,
  'message' => "Hello, I'm a bot"
]);

注意 Artisan::call,该命令将在后台执行,不会阻塞当前请求。

统计命令

命令 slack:stats 将有关应用程序的有用统计信息发送到 Slack。

您需要通过在 config/slack-output.php 中设置您首选的 Eloquent 类和日期来配置此命令。

您可以对类添加约束,以限制计数的数量。

'classes' => [
	  \App\Models\User::class => [
		  'is_active' => true //optional constraint
	  ]
],

日期数组的形式为 'date name' => Carbon::instance()。例如

'dates' => [
	'yesterday' => \Carbon\Carbon::yesterday(),
	'last week' => \Carbon\Carbon::today()->subWeek(1)
]

要每天安排此命令,简单地将以下内容添加到 app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
  $schedule->command('slack:stats')->daily()
}

异常处理器

要向 Slack 报告有用的异常,请打开 app/Exceptions/Handler.php 并进行如下转换

use CodeGym\SlackOutput\Facade\SlackOutput;

...

public function report(Exception $e)
{
  if ($this->shouldReport($e)) {
    SlackOutput::exception($e);
  }

  parent::report($e);
}

这将仅报告不在同一文件中的 $dontReport 数组中的异常。

失败作业处理器

要向 Slack 报告失败的作业,请打开 app/Providers/AppServiceProvider.php 并进行如下转换

use CodeGym\SlackOutput\Facade\SlackOutput;

...

public function boot()
{
  Queue::failing(function (JobFailed $job) {
    SlackOutput::jobFailed($job);
  });
}

计划命令报告

要向 Slack 报告计划命令的输出,请打开 app/Console/Kernel.php 并进行如下转换

use CodeGym\SlackOutput\Facade\SlackOutput;

...

protected function schedule(Schedule $schedule)
{
  SlackOutput::scheduledCommand(
    $schedule->command('db:backup-auto')->daily()
  );
}

贡献

如果您遇到问题、发现bug或有功能建议,请在GitHub上提交一个issue。我们也非常欢迎pull requests!

许可证

本软件包是开源软件,使用MIT许可证授权。