4

コンソール コマンドで問題が発生した場合、ログ付きのメールを送信するにはどうすればよいですか? 現在、Web インターフェイスからメールを送信するようにアプリを構成しており、正しく動作しています。Swiftmailer スプールが無効になっています。私の設定は次のとおりです。

monolog:
    handlers:
        main:
            type:         fingers_crossed
            action_level: critical
            handler:      grouped
        grouped:
            type:    group
            members: [streamed, buffered]
        streamed:
            type:  stream
            path:  "%kernel.logs_dir%/%kernel.environment%.log"
            level: debug
        buffered:
            type:    buffer
            handler: swift
        swift:
            type:       swift_mailer
            from_email: info@site.com
            to_email:   username@site.com
            subject:    An Error Occurred!
            level:      debug

実行しようとするphp app/console test:exception-command -e prodと、例外がスローされ、メールが送信されません。

4

3 に答える 3

1

swiftmailer 設定でスプールを無効にしてメールを送信する必要があります。これにより、メールはスプールされるのではなくすぐに送信され、コマンドはロガーを使用します。

メモリ スプールを使用する場合は、コマンドの実行メソッドでキューをフラッシュできます。

/**
 * force emails to be sent out at the end of execute
 */
protected function execute(InputInterface $input, OutputInterface $output)
{
    $container = $this->getContainer();
    $logger = $container->get('logger');
    $logger->critical('My Critical Error Message');

    $mailer = $container->get('mailer');
    $spool = $mailer->getTransport()->getSpool();
    $transport = $container->get('swiftmailer.transport.real');
    $spool->flushQueue($transport);
}

参照: http://symfony.com/doc/current/cookbook/console/sending_emails.html#using-memory-spooling

Uncaught Exceptions をログに記録したい場合は、ロガーで動作するようにコンソール イベントを構成する必要があります。

http://symfony.com/doc/current/cookbook/console/logging.html#enabling-automatic-exceptions-logging

于 2014-06-27T17:45:26.813 に答える