5

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

4

1 回答 1

3

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

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

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

于 2015-08-28T03:04:21.577 回答