Zum Inhalt springen

Wie aus Scheduler-Task in den Syslog schreiben

Erstellt am 23. Oktober 2014 · 1 Antwort · letzte Antwort am 23. Oktober 2014

Tags: PHP, Frage

zabinetta ·

Liebe Listenfreunde,
ich hab einen scheduler-Task, der ist stark am TestTask aus der Scheduler-Extension orientiert, checkt bestimmte Sachen, macht ein Update in einem Extrafeld der Pagestable, und schickt dann eine Email. soweit klappt das auch.
Nur hätte ich ein viel besseres Gefühl, wenn der Task den Inhalt dieser Email noch zusätzlich in den syslog schreiben könnte.
Die entsprechenden Zeilen habe ich ansatzweise auch schon im Task: Classes/Task/Task.php

...
\TYPO3\CMS\Core\Utility\GeneralUtility::devLog($pagesinfo, 'olremotewatch', 0); // das hier klappt. ist aber nur der devlog
\TYPO3\CMS\Core\Utility\GeneralUtility::sysLog($pagesinfo, 'olremotewatch', 0); // nichts passiert 
//$BE_USER->simplelog($pagesinfo, 'olremotewatch', 0); // das hier erzeugt einen Fehler und der Task bleibt hängen

Im Syslog sehe ich die Nachrichten vom scheduler, dass der Task gelaufen ist, aber nicht meine Message. brauche ich einen anderen Fehlercode? was müsste ich tun, damit $BE_USER->simplelog funktioniert?

das hier hab ich schon gelesen: #58879 aber klappt nicht
und hier draus werd ich nicht wirklich schlau: https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Logging/Index.html -> für den devlog brauch ich doch auch keinen Logger?

Kann jemand bitte helfen?

zabinetta · · Beste Antwort

Hurra, habs selbst gefunden (mehrere tiefere Blicke in den AbstractTask.php)

erste Möglichkeit: wie im AbstractTask
oben bei den Variablen brauch ich $scheduler:

/**
	 * Reference to a scheduler object
	 *
	 * @var \TYPO3\CMS\Scheduler\Scheduler
	 */
	protected $scheduler;

und weiter unten wo ich dann loggen will heisst die korrekte Zeile:

 $this->scheduler->log($pagesinfo, 0, 0);

und dann kommt im syslog:
14:37:17 sabine@LIVE [4] [0] [scheduler]: Seiten: Keine neuen Änderungen.

zweite Möglichkeit
unten kann ich loggen mit, dann brauch ich auch kein scheduler-Object

$GLOBALS['BE_USER']->writelog(4, 0, 0, 'scheduler', '[olremotewatch]: ' . $pagesinfo, array());