Log Laravel带有工匠输出

时间:2018-01-15 13:57:24

标签: php laravel

我正在使用Laravel并尝试使用此Log函数记录某些函数输出:

  

Log :: warning(" some message")

但是如果我想在控制台和日志文件中写,我需要用相同的不同函数写两次相同的消息:

  

Log :: warning(" some message")//这项工作适用于日志文件

     

dump("一些消息")//这项工作适用于工匠控制台输出

有一些功能允许我只使用其中一种吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Laravel事件集成此功能,而无需更改当前日志信息的方式。

Illuminate\Log\Events\MessageLogged事件添加侦听器,并在侦听器输出中将日志条目输入到控制台,如果请求来自控制台 - 使用runningInConsole()

  1. Register a new listener名为MessageLoggedListener,例如:

    protected $listen = [
        'Illuminate\Log\Events\MessageLogged' => [
            'App\Listeners\MessageLoggedListener',
        ],
    ];
    
  2. 使用php artisan event:generate

  3. 生成您的听众
  4. 将事件处理程序添加到侦听器:

    /**
    * 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>");
        }
    }
    
  5. 那就是它!您现在已准备好测试该功能。从控制台命令记录一条消息,例如:

        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的信息。