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().
来访问它
我在我的应用程序中使用 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().
来访问它