OPUS4 / application

OPUS 4 application.
Other
15 stars 21 forks source link

Hinweis in der Administration einblenden, wenn Fehler in der Konfiguration des Statistics-Loggers vorliegt #28

Open publica-bam opened 7 years ago

publica-bam commented 7 years ago

Uns ist in der BAM-Instanz aufgefallen, dass es eine fehlerhafte Konfiguration des Statistics-Loggers gibt (Klasse Opus_Statistic_LocalCounter). Der Mechanismus basiert u.a. auf einer Datei mit dem Namen ~localstat.xml die im workspace-Unterverzeichnis tmp verwaltet wird. Ist die Datei nicht vorhanden, so wird beim Aufruf einer Frontdoor automatisch eine neue Datei angelegt (Methode incrementStatisticsCounter im Frontdoor_IndexController).

Wenn die Datei vorhanden ist, aber nicht lesbar (bzw. schreibbar) ist, dann kommt es in der Klasse Opus_Statistic_LocalCounter zu einer Opus_Model_Exception (Zeile 284 bzw. 343). Ob das der richtige Exception-Typ ist, kann diskutiert werden.

Im Logfile opus.log landet dann folgender Eintrag:

2016-11-07T00:02:53+01:00 ERR (3, ID ##########105): Counting frontdoor statistics failed: exception 'Opus_Model_Exception' with message 'Error loading click-log "/home/opus/opus4-bam/opus4/workspace/tmp/~localstat.xml"' in /home/opus/opus4-bam/opus4/library/Opus/Statistic/LocalCounter.php:284
Stack trace:
#0 /home/opus/opus4-bam/opus4/library/Opus/Statistic/LocalCounter.php(195): Opus_Statistic_LocalCounter->logClick('37053', -1, 1478473373)
#1 /home/opus/opus4-bam/opus4/library/Opus/Statistic/LocalCounter.php(139): Opus_Statistic_LocalCounter->count('37053', -1, 'frontdoor')
#2 /home/opus/opus4-bam/opus4/modules/frontdoor/controllers/IndexController.php(372): Opus_Statistic_LocalCounter->countFrontdoor('37053')
#3 /home/opus/opus4-bam/opus4/modules/frontdoor/controllers/IndexController.php(158): Frontdoor_IndexController->incrementStatisticsCounter('37053')
#4 /home/opus/opus4-bam/libs/ZendFramework-1.12.9-minimal/library/Zend/Controller/Action.php(516): Frontdoor_IndexController->indexAction()
#5 /home/opus/opus4-bam/libs/ZendFramework-1.12.9-minimal/library/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('indexAction')
#6 /home/opus/opus4-bam/libs/ZendFramework-1.12.9-minimal/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#7 /home/opus/opus4-bam/libs/ZendFramework-1.12.9-minimal/library/Zend/Application/Bootstrap/Bootstrap.php(101): Zend_Controller_Front->dispatch()
#8 /home/opus/opus4-bam/libs/ZendFramework-1.12.9-minimal/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#9 /home/opus/opus4-bam/opus4/public/index.php(74): Zend_Application->run()
#10 {main}

Es wäre schön, wenn man gleich in der Administration an geeigneter Stelle sehen könnte, dass hier eine Fehlkonfiguration auf Systemebene vorliegt. Dazu sollte geprüft werden, ob die Methoden is_readable bzw. is_writable jeweils true zurückliefern. Ist das nicht der Fall, so muss auf Systemebene an den Zugriffsrechten des Verzeichnis tmp etwas geändert werden.

Wird diese Fehlkonfiguration nicht bemerkt (im Hosting kann das nur vom Hostingteam bemerkt werden, weil der Kunden kein Zugriff auf das Logfile hat), so steigt der Platzbedarf des Logfile mit jedem Frontdoor-Zugriff um ca. 1,7 Kilobyte an, ohne dass dies bemerkt wird.

publica-bam commented 7 years ago

Vielleicht kann man auch gänzlich auf die Datei ~localstat.xml verzichten. Die Klasse wurde ja seit 2011 nicht mehr angefasst und mir ist nicht klar, wozu die Datei überhaupt benötigt wird und ob sich das nicht besser lösen lässt.