我正在使用Laravel并尝试使用此Log函数记录某些函数输出:
Log :: warning(" some message")
但是如果我想在控制台和日志文件中写,我需要用相同的不同函数写两次相同的消息:
Log :: warning(" some message")//这项工作适用于日志文件
dump("一些消息")//这项工作适用于工匠控制台输出
有一些功能允许我只使用其中一种吗?
答案 0 :(得分:0)
您可以使用Laravel事件集成此功能,而无需更改当前日志信息的方式。
为Illuminate\Log\Events\MessageLogged
事件添加侦听器,并在侦听器输出中将日志条目输入到控制台,如果请求来自控制台 - 使用runningInConsole()。
Register a new listener名为MessageLoggedListener
,例如:
protected $listen = [
'Illuminate\Log\Events\MessageLogged' => [
'App\Listeners\MessageLoggedListener',
],
];
使用php artisan event:generate
将事件处理程序添加到侦听器:
/**
* Handle the event.
*
* @param MessageLogged $event
* @return void
*/
public function handle(MessageLogged $event)
{
if (app()->runningInConsole()) {
$output = new ConsoleOutput();
$output->writeln("<error>{$event->message}</error>");
}
}
那就是它!您现在已准备好测试该功能。从控制台命令记录一条消息,例如:
public function handle()
{
Log::error('Hello world! This is an error.');
}
这是您将看到的输出:
$ php artisan command
Hello world! This is an error.
在您的日志文件中,您会看到:
[2018-01-15 16:55:46] local.WARNING: Hello world! This is an error.
您可以通过添加不同的输出样式来改进功能,例如,您可能希望使用error
表示错误,使用info
表示信息。您可以阅读有关样式输出here in the Symfony documentation的信息。