Wie kann man eigene Cronjobs vernünftig prüfen?

Aktuell bin ich an einem Punkt der irgendwie nervig ist.

Habe hier ein Plugin was einen Cronjob bzw. Task enthällt. Laut dem Frosh Tool läuft dieser Task alle 5 Minuten braf durch. Jedoch ob wirklich im Task die Funktion run() ausgeführt wird sehe ich nicht. Kein Log, keine Fehlermeldung, einfach gar nichts.

Wie kann ich nun sauber prüfen, ob mein Task wirklich ausgeführt wird? Habe als Notlösung eine PHP-Mail-Funktion, aber die reagiert auch nicht. Ich sehe an keiner Stelle in Shopware wo das Problem hängt. Leider gibt es auch keine Möglichkeit (jedenfalls mir keine bekannt) wie ich mein Cronjob manuell aufrufen und somit testen kann.

Hat wer irgendwelche Ideen?

Die KI sagt: Anstatt PHP-Mail-Funktion einfach der „run()“ Methode einen Log-Eintrag hinzufügen.

use Psr\Log\LoggerInterface;

class CronA extends ScheduledTaskHandler
{
    private LoggerInterface $logger;

    public function __construct(
        EntityRepository $scheduledTaskRepository,
        LoggerInterface $logger
    ) {
        parent::__construct($scheduledTaskRepository);
        $this->logger = $logger;
    }

    public function run(): void
    {
        $this->logger->info('CronA Task started');
        
        // Dein Task-Code hier

        $this->logger->info('CronA Task finished');
    }
}

Bitte verwende einen Begriff konstant, möglichst den korrekten: Task.

Shopware loggt in der Datenbank, wann zuletzt und wann das nächste Mal dein Task ausgeführt wird.

Für Logging innerhalb deines Tasks bzw. deines Services bist du selbst „verantwortlich“. Die Verwendung von Logger, wie es durchgängig in Symfony/Shopware erfolgt, wäre naheliegend.

War jetzt einige Tage nicht mehr hier im Forum, daher erst jetzt mein Feedback.

Nun, ich habe das so eingebaut. Aber wo sehe ich diese Einträge? Also bei dev.log oder prod.log oder auch Ereignis-Logs wird nichts geschrieben. Ich sehe im Frosch-Tool das die geplante Aufgaben durchlaufen, aber ob der Task wirklich läuft sehe ich immer noch nicht.

Nun ja, ich komme von Shopware 4 da ist der Begriff für „Geplante Aufgaben“ noch Cronjob so im Hinterkopf. Aber das ist für mich jetzt Krümelkackerei, denn für mich ist es wichtiger dass die „Geplante Aufgaben“ funktionieren. Die Begrifflichkeit ist für mich jetzt weniger relevant. Werde aber in Zukunft daran denken :slight_smile:

Das Forum ist dafür gedacht ALLEN zu helfen. Deswegen versuchen wir alle uns an die korrekten Begriffe zu halten :upside_down_face:

Die Sache mit dem LoggerInterface habe ich in den Griff bekommen. Unter PROD benutzte ich allerdings nicht „$this->logger->info“, sondern „$this->logger->critical“. Dann sehe ich was ohne tausenden DEV-Zeilen wie im DEV.

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.