Erweiterung der Laravel-Kernprotokollierung

Ich bin mit mehr Laravel-Problemen zurück, da ich Probleme habe, Dinge zu verstehen.

Ich versuche erneut, ein Paket für meine eigene Protokollierung zu erstellen. Nachdem ich einige zusätzliche Schritte gelesen, den Kerncode durchgearbeitet und andere Ansätze ausprobiert habe, bin ich zu dem Schluss gekommen, dass ich nur die Kernfunktionalität der Laravel-Protokollierung erweitern muss, sodass die Protokollierung mit einem anderen Pfad erfolgt benutzerdefinierten Formatierer.

Ich habe mein Paket erstellt. Hier ist meine Dienstleisterklasse:

use Illuminate\Log\LogServiceProvider;

class VmlogServiceProvider extends LogServiceProvider {


    /**
     * Bootstrap the application events.
     *
     * @return void
     */
    public function boot()
    {
        App::bind('log', function()
        {
            return new Vm\Vmlog\Vmlog;
        });     
        parent::boot();

    }

}

?>

Hier ist die VmLog-Klasse

<?php namespace Vm\Vmlog;

use App;
use Illuminate\Support\ServiceProvider;
use Log;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\RotatingFileHandler;

class Vmlog extends \Illuminate\Log\Writer {


    protected $path;
    protected $formatter;
    protected $stream;
    protected $rotatingStream;

    public function __construct() {

        $output = APP_HOST."|%datetime%|%level%|%level_name%|".__METHOD__."|%message%|%context%".PHP_EOL;
        $this->path = VM_LOGPATH.APP_VLCODE."/".APP_VLCODE."_".APP_INSTANCE.".log";
        $this->formatter = new LineFormatter($output, $dateFormat);

        parent::__construct();
    }

    /**
     * Register a file log handler.
     *
     * @param  string  $path
     * @param  string  $level
     * @return void
     */
    public function useFiles($path, $level = 'debug')
    {
        $level = $this->parseLevel($level);

        $this->stream = new StreamHandler($this->path, $level);
        $this->stream->setFormatter($this->formatter);

        $this->monolog->pushHandler($this->stream);
    }

    /**
     * Register a daily file log handler.
     *
     * @param  string  $path
     * @param  int     $days
     * @param  string  $level
     * @return void
     */
    public function useDailyFiles($path, $days = 0, $level = 'debug')
    {
        $level = $this->parseLevel($level);
        $this->rotatingStream = new RotatingFileHandler($this->path, $days, $level);
        $this->rotatingStream->setFormatter($this->formatter);

        $this->monolog->pushHandler($this->rotatingStream);
    }

}

?>

Ich habe den LogServiceProvider in app.php auskommentiert und in meinem VmlogServiceProvider an seiner Stelle hinzugefügt.

Wenn ich versuche, Dinge auszuführen, erhalte ich jedoch die folgende Fehlermeldung.

Aufruf der undefinierten Methode Illuminate \ Support \ Facades \ Log :: useDailyFiles ()

Ich verstehe nicht, warum das passiert. Ich habe den zentralen LogServiceProvider entfernt, ihn durch einen eigenen ersetzt und ihn gemäß der Dokumentation korrekt gebunden (glaube ich). Was mache ich hier falsch?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage