我在我的应用中使用 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。
答案 0 :(得分:2)
首先,请记住,如果您更改邮件程序类中的日志处理程序,则会针对整个应用程序更改它们。
其次,您在更改后将日志写入2个文件的原因是 useFiles()不会覆盖默认的日志处理程序,但会添加新的处理程序 Monolog 将使用的处理程序。因此,您只需向列表中添加第二个处理程序,它们都会通过将日志消息保存到不同的文件来处理日志消息。
第三,Laravel的 Log Facade没有提供替换默认处理程序的方法 - 如果你想使用它,你需要直接使用 Monolog 。您可以通过调用 Log :: getMonolog()。
来访问它