Laravel Log useFiles方法使Log写入多个文件

时间:2015-08-27 18:12:50

标签: php laravel logging monolog laravel-facade

我在我的应用中使用 Laravel Log Facade 。我有几个服务,如Mandrill,Twilio,Stripe等,需要记录在单独的文件中。但是,当我使用Log :: useFiles()为其中一个服务包装类设置单独的文件时,如下所示:

Class Mailer
{
    static function init()
    {
        Log::useFiles(storage_path('logs/mandrill-'.date("Y-m-d").'.log'));
    }

    static function send()
    {
        // some code here...

        Log::error("Email not sent");
    }
}

我最终会在Laravel日志文件和此Mandrill日志文件中写入日志。

有没有办法告诉Log只在一个文件中写日志?

这样做通常很奇怪,因为当我直接使用 Monolog 时,它只能写入一个文件中。据我所知,Log Facade正在使用Monolog。

1 个答案:

答案 0 :(得分:2)

首先,请记住,如果您更改邮件程序类中的日志处理程序,则会针对整个应用程序更改它们。

其次,您在更改后将日志写入2个文件的原因是 useFiles()不会覆盖默认的日志处理程序,但会添加新的处理程序 Monolog 将使用的处理程序。因此,您只需向列表中添加第二个处理程序,它们都会通过将日志消息保存到不同的文件来处理日志消息。

第三,Laravel的 Log Facade没有提供替换默认处理程序的方法 - 如果你想使用它,你需要直接使用 Monolog 。您可以通过调用 Log :: getMonolog()

来访问它