【问题标题】:Log Laravel with artisan output使用工匠输出记录 Laravel
【发布时间】:2018-06-24 04:07:31
【问题描述】:

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

Log::warning("一些消息")

但是如果我想在控制台和日志文件中写入,我需要使用不同的功能写入两次相同的消息,如下所示:

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

dump("some message") //这对工匠控制台输出很有用

有一些功能只允许我使用两者之一?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以使用 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. 将事件处理程序添加到您的侦听器:

      /**
      * 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

    【讨论】:

      猜你喜欢
      • 2020-06-28
      • 2018-04-10
      • 2021-08-17
      • 2021-06-12
      • 2016-12-06
      • 2021-09-15
      • 2014-03-19
      • 2016-07-08
      • 2013-05-31
      相关资源
      最近更新 更多