Laravel发送电子邮件进行日志记录而不是写入存储

Wiz*_*ard 10 php laravel laravel-4

我查看了文档,无法找到更改日志记录的方法,因为任何错误通常会写入/app/storage/logs/logs/log-apache2handler-xxxx-xx-xx.txt

但是在生产服务器上,我想要通过电子邮件将其中任何一个发送给我.

有没有办法做到这一点?

小智 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);
}
});
Run Code Online (Sandbox Code Playgroud)

  • 使用App :: environment()而不是Config :: getEnvironment()怎么样? (3认同)

phi*_*sch 5

Due Laravel在内部使用Monolog库,我认为使用预期的日志处理程序是一个更好的解决方案.因此,每个未捕获的异常和日志的手动调用都将发送到您的邮件地址.

如果你正在使用mail()

将NativeMailerHandler添加到您的app/start/global.php:

$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
    )
);
Run Code Online (Sandbox Code Playgroud)

如果您已配置Laravel SMTP邮件

将SwiftMailerHandler添加到您的app/start/global.php:

(Swift梅勒也在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?
    )
);
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以按照其他帖子中的说明添加环境检查.对于许多其他处理程序,还可以查看https://github.com/seldaek/monolog