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

Laravel Log useFiles method is making Log write in multiple files

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

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。

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

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

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

来访问它