2

Laravel 4 artisan コマンドから raygun.io にエラーと例外を送信しようとしていますが、Laravel には独自の例外ハンドラが配置されているようです。

コマンドでカスタム メソッドを指定する方法はありますか? 現在、次のようにエラーと例外のカスタム ハンドラーを指定しようとしています。

<?php
class ParseCommand extends Command
{
    /**
     * The console command name.
     *
     * @var string
     */
    protected $name = 'my:parse';

    protected $descriptino = '...';

    protected $raygun = null;

    /**
     * __construct
     */
    public function __construct()
    {
        parent::__construct();

        // Setup custom error and exception handlers
        $raygun_api_key = \Config::get('tms.raygun_api_key');
        $this->raygun = new RaygunClient("MUzf+furi8E9tffcHAaJVw==");
        set_exception_handler([$this, 'exceptionHandler']);
        set_error_handler([$this, 'errorHandler']);
    }

    /**
     * Custom exception handler.
     *
     * @param $exception
     */
    public function exceptionHandler($exception)
    {
        $this->raygun->SendException($exception);
    }

    /**
     * Custom error handler.
     *
     * @param $errno
     * @param $errstr
     * @param $errfile
     * @param $errline
     */
    public function errorHandler($errno, $errstr, $errfile, $errline)
    {
        $this->raygun->SendError($errno, $errstr, $errfile, $errline);
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function fire()
    {
        $start_time = microtime(true);
        throw new \Exception("Oopsie!");

        // Omitted for brevity...
    }
}

もちろん、Artisan は独自のカスタム実装でハンドラーを取得しているため、ハンドラーが実行されることはありません。

4

1 に答える 1

3

フォルダー内のファイルはapp/start、対応する環境が実行されているときに Laravel フレームワークを起動しているときにのみ実行されます。これはapp/start/local.php、 環境が と等しいときに が実行され、 環境が と等しいときに が実行されることlocalを意味します。また、ファイルは毎回実行され、職人の実行ごとに実行されます。app/start/staging.phpstagingapp/start/global.phpapp/start/artisan.php

ドキュメントから: http://laravel.com/docs/errorsハンドラを配置します

App::error(function(Exception $exception)
{
    Log::error($exception);
});

app/start/artisan職人専用の例外ハンドラー用です。

于 2014-04-14T20:04:31.333 に答える