Laravel Log useFiles方法是将日志写入多个文件


Laravel Log useFiles method is making Log write in multiple files

我在我的应用程序中使用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使用的是独白

首先,请记住,如果您更改Mailer类中的日志处理程序,您将为整个应用程序更改它们。

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

第三,Laravel的Log facade并没有提供替代默认处理程序的方法——如果你想使用它,你需要直接使用Monolog。您可以通过调用Log::getMonolog().
来访问它。