Laravel Log useFiles 方法正在将 Log 写入多个文件

Mla*_*vic 6 php logging laravel 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

我最终将日志写入 Laravel 日志文件和 Mandrill 日志文件中。

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

它这样做通常很奇怪,因为当我直接使用Monolog时,它只写入一个文件,正如它应该的那样。据我所知 Log Facade 使用的是 Monolog。

jed*_*ylo 4

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

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

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