Seitenzugriffe protokollieren

Nutzbar ab: Version

Die Seitenaufrufe Ihres Projektes können Sie in einer täglichen Protokolldatei ablegen.

Die BASE Projektbasis bietet Ihnen die Möglichkeit, alle Zugriffe auf Seiten in einer täglichen Protokolldatei zu protokollieren (Server-Monitoring). In aktuellen BASE-Projekten ist diese Funktion bereits am Ende der Pre-Datei des globalen Projektes enthalten und in der Projektkonfiguration als Variable gesetzt.

Das Schreiben der Seitenzugriffe in tägliche Protokolldateien erfordert keine spezielle Lizenz. Lediglich zum Aufruf des Server-Monitoring über die entsprechende Maske ist bei einem Lizenzpaket kleiner Core Business (z.B. Core Classic oder Core Toolkit) das Zusatzmodul "Server-Monitoring" erforderlich.
Gleiches gilt für die Statistik, welche sich aus den Logs des Server-Monitoring generiert.

Protokollierung aktivieren

Die Protokollierung aktivieren Sie - wie im Queltextbeispiel weiter unten ersichtlich - durch Setzen der PHP-Framework Funktion wPageCur::logRequest. Sofern der Eintrag noch nicht vorhanden ist, setzen Sie diesen entsprechend. Achten Sie darauf, dass Sie für diese Funktion eine Weblication® CMS Version ab 006.001.081.000 im Einsatz haben!

Die Informationen der Seitenzugriffe werden im globalen Projekt im logs-Verzeichnis abgelegt. Für jeden Tag wird eine separate Protokolldatei nach folgendem Muster angelegt:

/[IHR-LAYOUT-PROJEKT]/wGlobal/logs/requests/day-yyyy-mm-dd.log

Die Protokollierung enthält folgender Informationen, die pro Zugriff in einer Zeile mit Semikolon getrennt geschrieben werden:


Beispiel: Auszug aus /[IHR-LAYOUT-PROJEKT]/wGlobal/scripts/pre.php

// ...
// Protokolliert alle Zugriffe auf Seiten in einer täglichen Protokolldatei
if(wVariables::getValue('log_requests', '/[IHR-LAYOUT-PROJEKT]') == 'yes'){
wPageCur::logRequest(array('projectPath' => wProjectCur::getPathGlobal(), 'anonymize' => 1));
}
// ...

Sofern der Eintrag der Variablen in der Projektkonfiguration (log_requests) noch nicht vorhanden ist, tragen Sie diesen manuell nach (siehe nachfolgendes Quelltextbeispiel).
Ab CMS-Version 13.x ist es möglich, auch Assets-Dateien bei der Protokollierung zu berücksichtigen. Hierzu reicht die Erweiterung der Projektkonfiguration um die Variable log_requests_assets, welche auf den Wert yes gesetzt werden muss. Erfasst werden alle Dateien, welche über die .htaccess Regel auf die accessDocument.php (der Software) umgeleitet werden.

Beispiel: Auszug aus /[IHR-LAYOUT-PROJEKT]/wGlobal/content/default.wVariables.php

  <variable description="Seitenzugriffe protokollieren" key="log_requests" type="char.yesno">yes</variable>
  <!-- Falls auch Asset-Dateien protokolliert werden sollen (Wert auf yes setzen)-->
  <variable description="Zugriffe auf Dokumente protokollieren" key="log_requests_assets" type="char.yesno">no</variable>

Nachfolgend die empfohlene Definition für Multi-Projekt Umsetzungen, um die Logs jeweils im zugehörigen globalen Projekt (z.B. /projekt1-wGlobal) abzulegen.

Beispiel: Auszug aus /[IHR-INHALTS-PROJEKT]/wGlobal/scripts/pre.php einer Multi-Projekt Umsetzung

// ...
// Protokolliert alle Zugriffe auf Seiten in einer täglichen Protokolldatei
if(wVariables::getValue('log_requests', wProjectCur::getPathLayout()) == 'yes'){
wPageCur::logRequest(array('projectPath' => wProjectCur::getPathGlobal(), 'anonymize' => 1));
}
// ...

Protokollierung deaktivieren

Die Protokollierung kann deaktiviert werden, wenn diese in der Projektkonfiguration auf Nein (no) gesetzt werden.
Ab CMS-Version 19 werden zudem auch keine actions-Logs mehr geschrieben, wenn log_requests und log_requests_wa auf no stehen.

Limit für Protokolldateien setzen (Logs bereinigen/löschen)

Ab Weblication® CMS Version 007.001.205.000 können Sie manuell einstellen, dass die Protokolldateien für das Monitoring nach der angegebenen Anzahl an Tagen gelöscht werden. Ab CMS-Version 10 finden Sie die Einstellung auch über die Maske der Systemeinstellungen (Allgemein).
Das Löschen erfolgt durch Aufruf des Server-Monitorings. Alternativ können Sie die Logs auch über die Framework-Funktion wProject::clearLogs() bereinigen (z.B. wenn das Server-Monitoring nicht über Lizenz freigeschaltet ist).

Für Installationen älter CMS 10.x:
Setzen Sie hierzu den Wert des limitDays-Attributes innerhalb des requests-Tags (zu logging) auf den gewünschten Wert, z.B. "30" (für 30 Tage).
Sofern das Tag in der default.wConf.php noch nicht vorhanden sein sollte, setzen Sie dies XML-Konform. 

Beispiel: Auszug aus der /weblication/grid5/conf/default.wConf.php zum Setzen des Limits

<wConf version="16">
  ...
  <logging>
    <requests limitDays="30"/>
  </logging>
  ...
</wConf>

Bestimmte Seitenaufrufe von Protokollierung auschliessen

Sollen bestimmte Seitenaufrufe im Server-Monitoring und somit in der Statistik nicht erscheinen, können Sie diese über eine Abfrage in der pre.php des globalen Projektes ausschliessen.

Dies kann z.B. bei Nutzung der Megadropdown-Navigation, welche per Mouseover geladen wird, gewünscht sein.

Beispiel: Auszug aus /[IHR-INHALTS-PROJEKT]/wGlobal/scripts/pre.php - Ausschliessen von dropdown-Pfaden

...
// Protokolliert alle Zugriffe auf Seiten in einer täglichen Protokolldatei
// Aufrufe der Megadropdown-Navigation ( /dropdown/ im Pfad) ausschliessen:
$queryExcluded = preg_match('/\/dropdown\//', $_SERVER['REQUEST_URI']);
if(
wVariables::getValue('log_requests', $wPathLayout) == 'yes' && $queryExcluded !== 1){
...
...

Hinweise

Sorgen Sie dafür, dass die Protokolldateien vor Fremdzugriff geschützt werden! Ein Direktaufruf kann z.B. über eine .htaccess Datei unterbunden werden.