【问题标题】:How can I write separate log files in Laravel 5?如何在 Laravel 5 中编写单独的日志文件?
【发布时间】:2017-01-14 03:33:35
【问题描述】:

我希望有单独的日志文件来存储我的某些 API 方法的调试数据。 car_create.logcar_update.log 之类的东西。

我可以通过内置的日志记录功能实现这一点吗?这不是某种错误的方法吗?因为似乎几乎没有人有同样的问题。任何意见或建议将不胜感激!

【问题讨论】:

  • Laravel 使用 Monolog 这将允许你这样做。检查https://github.com/Seldaek/monolog/blob/master/doc/02-handlers-formatters-processors.md

标签: php laravel logging laravel-5


【解决方案1】:

是的,单独的日志文件是可能的。

Errors & Logging documentation 通知 Monolog 是 Laravel 使用的底层日志记录包。您可以使用Monolog 做任何您想做的事情。

示例日志记录助手

<?php

namespace App\Helpers\Common;

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Carbon\Carbon;

class FileLogger extends Logger
{
    protected $path = null;

    public function __construct($name, $level = 'DEBUG', $path = null, array $processors = [ ])
    {
        $tz = static::$timezone = new \DateTimeZone(config('app.timezone'));
        $handlers = [ ];
        parent::__construct($name, $handlers, $processors);

        $dtObj = Carbon::now($tz);

        if ( ! $path) {
            $path = $name . '-' . $dtObj->format('Y-m-d') . '.log';
        }

        $path = $this->path = storage_path('logs/' . $path);

        $this->addStream($path, $level);

        return $this;
    }

    public static function getLevelNum($level)
    {
        return static::getLevels()[ strtoupper($level) ];
    }

    public function addStream($path, $level = 'DEBUG')
    {
        if ( ! is_int($level)) {
            $level = static::getLevelNum($level);
        }
        $this->pushHandler(new StreamHandler($path, $level));

        return $this;
    }

    public function addRecord($level, $message, array $context = array())
    {
        if ( ! is_int($level)) {
            $level = static::getLevelNum($level);
        }

        parent::addRecord($level, $message, $context);

        return $this;
    }
}

示例用法

use App\Helpers\Common\FileLogger;

// ...

$level = 'DEBUG';

$logger = new FileLogger('NAME', $level);

$logger->addRecord($level, $message, $context);

【讨论】:

  • 谢谢!这绝对是我想要的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
相关资源
最近更新 更多