10

ドキュメントに目を通しましたが、通常は /app/storage/logs/logs/log-apache2handler-xxxx-xx-xx.txt に書き込まれるエラーのログを変更する方法が見つかりません。

しかし、本番サーバーでは、代わりにそれらのいずれかがメールで送信されるようにしたいと考えています。

これを行う方法はありますか?

4

4 に答える 4

18

私はまだエラーをログに記録し、それが本番環境である場合は、例外を含む電子メールを送信します:

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

if (Config::getEnvironment() == 'production')
{
    $data = array('exception' => $exception);
    Mail::send('emails.error', $data, function($message)
    {
        $message->from($email_app);
        $message->to(Config::get('settings.error_email'))->subject(Config::get('settings.app_name') . ' Error');
    });
    Log::info('Error Email sent to ' . Config::get('settings.error_email'));
    return Response::view('errors.500', array(), 500);
}
});
于 2013-10-20T18:05:40.953 に答える
5

Laravel は内部で Monolog ライブラリを使用しているため、目的のログ ハンドラーを使用する方が良い解決策だと思います。そのため、キャッチされなかったすべての例外と Log の手動呼び出しは、あなたのメール アドレスに送信されます。

mail() を使用している場合

app/start/global.php に NativeMailerHandler を追加します。

$logFile = 'log-'.php_sapi_name().'.txt';

Log::useDailyFiles(storage_path().'/logs/'.$logFile);
Log::getMonolog()->pushHandler(
    new Monolog\Handler\NativeMailerHandler(
        'to@domain.de',
        '[Log] Some Subject',
        'from@domain.de'
        Logger::ERROR, // set minimal log lvl for mail
        true, // bubble to next handler?
        70 // max column width in your mail
    )
);

Laravel SMTP Mailing を設定した場合

app/start/global.php に SwiftMailerHandler を追加します。

(Swift Mailer は Laravel 内部でも使用されています)

$logFile = 'log-'.php_sapi_name().'.txt';

Log::useDailyFiles(storage_path().'/logs/'.$logFile);
Log::getMonolog()->pushHandler(
    new Monolog\Handler\SwiftMailerHandler(
        Mail::getSwiftMailer(),
        Swift_Message::newInstance('[Log] Some Subject')->setFrom('from@domain.de')->setTo('to@domain.de'),
        Logger::ERROR, // set minimal log lvl for mail
        true // bubble to next handler?
    )
);

必要に応じて、他の投稿で説明されているように環境チェックを追加します。他の多くのハンドラーについては、https://github.com/seldaek/monologもご覧ください。

于 2015-03-03T22:15:54.350 に答える