Seite 1 von 1

Logs aufbohren

Verfasst: Mo 22. Feb 2016, 08:06
von mattmarr
Hi!

mal eine Frage:

Gibt es irgendwie die Möglichkeit das Log-Buch etwas ausführlicher zu gesicht zu bekommen?

Beispiel:
- Wird ein Benutzer gelöscht, sehe ich nicht wer gelöscht wurde.
- Wird Mehrfachlöschung benutzt, sehe ich nicht was alles gelöscht wurde
- Wird Kategorie On- oder offline setzen gedrückt, sehe ich nicht welche
- ...



Gruß
Matthias

Re: Logs aufbohren

Verfasst: Mo 22. Feb 2016, 19:13
von Oldperl
Hallo Matthias,

das Benutzer-Log von Contenido ist/war eigentlich primär einmal zur redaktionellen Verfolgbarkeit von Änderungen im Artikelbereich gedacht. Daher ist es hauptsächlich auch auf das Loggen von Artikel-bezogenen Tätigkeiten ausgelegt. Man findet entsprechendes in der Klasse Backend und deren Methode "log"

Das Eintragen selbst wird nur an ein paar Stellen im Core angestossen, so beispielsweise in der Datei main.php (Zeilen 177-185) und dort auch nur dann, wenn eine 'action' vorhanden ist. Schaut man sich die Umsetzung an, so ist es eigentlich kein reines Benutzer-Log sondern wie gesagt eher ein Redakteurs-Log.

Sicherlich könnte man das noch etwas aufbohren indem man in der Methode die eine oder andere Info abhängig von der Aktion zum Eintrag hinzufügt.

Gruß aus Franken

Ortwin

Re: Logs aufbohren

Verfasst: Di 9. Mai 2017, 08:50
von mattmarr
Hallo!

Ich schubs das Thema noch mal an.

Durch die Umstellung vieler Kunden von PHP 5.x auf PHP7 gibt es einige Logbücher die sich derzeit zumüllen mit Fehlermeldung. Ich verstehe die Fehleremeldungen, keine Frage, aber wo bitte in einem Contenido, mit vielen Mandaten, befindet sich der Fehler. Hier mal ein Eintrag aus dem Logbuch:
[09-May-2017 09:25:13 Europe/Berlin] PHP Warning: Illegal offset type in /home/.../contenido/includes/frontend/include.front_content.php(754) : eval()'d code on line 169
Ich kann anhand der Meldung weder den Clienten noch das Modul identifizieren.

Meine Frage:
Besteht für die Zukunft die Möglichkeit, das Logen um die ClientID zu erweiteren bzw. wo kann ich das fürs erste selbst machen?

Wäre für eine Lösung sehr dankbar.


Gruß
Matthias

Re: Logs aufbohren

Verfasst: Do 18. Mai 2017, 08:13
von frederic.schneider_4fb
Du findest alle Log-relevanten Dateien im Ordner contenido/classes/log und im Speziellen die class.log.php. Obenstehende Fehlermeldung deutet auf einen Modul-Fehler hin

Re: Logs aufbohren

Verfasst: Do 18. Mai 2017, 08:19
von mattmarr
Hallo Frederic!
frederic.schneider_4fb hat geschrieben:
Do 18. Mai 2017, 08:13
Obenstehende Fehlermeldung deutet auf einen Modul-Fehler hin
Das es ein Modulproblem ist, ist mir klar. :wink:
Frage ist aber, bei welchem Client das Problem auftritt? Das ist leider nicht ersichtlich.


Gruß
Matthias

Re: Logs aufbohren

Verfasst: Do 18. Mai 2017, 08:22
von frederic.schneider_4fb
Das kannst Du, wie erwähnt, in der Log-Klasse ergänzen. Standardmäßig haben wir diese Information nicht im System. Wir debuggen allerdings auch genauso, indem wir ausprobieren, bei welchem Seitenaufruf unter welcher Konstellation ein solcher Fehler in die Log geschrieben wird

Re: Logs aufbohren

Verfasst: Do 18. Mai 2017, 08:49
von mattmarr
frederic.schneider_4fb hat geschrieben:
Do 18. Mai 2017, 08:22
Wir debuggen allerdings auch genauso, indem wir ausprobieren, bei welchem Seitenaufruf unter welcher Konstellation ein solcher Fehler in die Log geschrieben wird
Das Debuggen ist aber extrem schwierig bei mehreren Clienten.
Es wäre doch bestimmt eine Kleinigkeit für euch, standardmäßig im Log, die Client-ID mitzuloggen.


Gruß
Matthias

Re: Logs aufbohren

Verfasst: Do 18. Mai 2017, 10:35
von frederic.schneider_4fb
Ich muss mich auch korrigieren:

In Deinem Fall hilft es nichts, die Dateien im "logs"-Ordner zu manipulieren. CONTENIDO "leitet" bei solchen PHP-Fehlern lediglich die normale PHP-Fehlerausgabe in die errorlog.txt um - nicht mehr, nicht weniger. Daher ist es auch nicht möglich, ohne größere Umbauarbeiten, die Client-Id mit auszugeben

Re: Logs aufbohren

Verfasst: Do 18. Mai 2017, 13:08
von mattmarr
Hallo!
frederic.schneider_4fb hat geschrieben:
Do 18. Mai 2017, 10:35
Ich muss mich auch korrigieren:

In Deinem Fall hilft es nichts, die Dateien im "logs"-Ordner zu manipulieren. CONTENIDO "leitet" bei solchen PHP-Fehlern lediglich die normale PHP-Fehlerausgabe in die errorlog.txt um - nicht mehr, nicht weniger. Daher ist es auch nicht möglich, ohne größere Umbauarbeiten, die Client-Id mit auszugeben
Wo genau, in welcher Datei, wird der PHP Fehler denn geschrieben?
Ich würde mir das mal genauer anschauen. Was ich bisher gefunden habe war leider nicht aufschlussreich.


Gruss
Matthias

Re: Logs aufbohren

Verfasst: Do 18. Mai 2017, 14:27
von frederic.schneider_4fb
Lieber Matthias,

diese PHP-Fehlermeldungen werden in keiner spezifischen Datei von CONTENIDO geschrieben. Wie ich schrieb:
CONTENIDO sorgt lediglich dafür, dass diese PHP-Fehlermeldungen nicht in Deinem Browser ausgegeben, sondern in die errorlog.txt geschrieben werden. CONTENIDO nimmt keinerlei Einfluss auf die Art, Form oder den Inhalt dieser Fehlermeldungen. Eben deshalb ist es auch nicht mit einem Fingerstreich getan, eine Client-Id anzuhängen. PHP-Fehlermeldungen können in jeder PHP-Datei auftreten.

Re: Logs aufbohren

Verfasst: So 21. Mai 2017, 17:04
von Oldperl
Servus,

es gibt eine Möglichkeit die von Matthias gewünschten Änderungen zu machen. PHP bietet die Möglichkeit die interne Fehlerroutine durch eine eigene Routine zu ersetzen. Dieses ist zwar auch dann nur eingeschränkt möglich, aber zumindest kann man für einige PHP-Fehler eine eigen Fehlerbehandlung machen. Auch kann man in der eigenen Routine den von PHP bereits erkannten Fehler abfragen und dann entsprechend verfahren.

Weitere Infos zum Thema findet man auf php.net :arrow: http://php.net/manual/de/function.set-error-handler.php

Gruß aus Franken

Ortwin

Re: Logs aufbohren

Verfasst: Do 13. Aug 2020, 08:55
von mattmarr
Hallo @all!

Ist zwar schon ein Weilchen her aber ich habe jetzt eine not Lösung gefunden.
Zumindest wird jetzt pro Mandant ein Errorlog geschrieben und nicht mehr alles in eines.

In der Datei ROOT/data/config/.../config.misc.php folgende Änderungen vornehmen:

Suche:

Code: Alles auswählen

$cfg['php_settings']['error_log'] = $cfg['path']['contenido_logs'] . 'errorlog.txt';
Ersetzen:

Code: Alles auswählen

$cfg['php_settings']['error_log'] = $cfg['path']['contenido_logs'] . 'errorlog-' . cRegistry::getClientId() . '.txt';
Suche:

Code: Alles auswählen

$cfg['system_log']['allowed_filenames'] = array('deprecatedlog.txt', 'errorlog.txt', 'exception.txt', 'security.txt', 'setuplog.txt');
Ersetzen:

Code: Alles auswählen

$cfg['system_log']['allowed_filenames'] = array('deprecatedlog.txt', 'errorlog.txt', 'errorlog-1.txt', 'errorlog-2.txt', 'exception.txt', 'security.txt', 'setuplog.txt');
'errorlog-1.txt': Die 1 ist die ClientID des Mandanten. In meinem Beispiel sind zwei Mandanten 1 und 2 vorhanden. Habt Ihr mehr, müsst ihr entsprechend mehr werte eintragen.
Im ganzen ist es keine schöne Losung aber um den Übeltäter zu finden, der das Errorlog explordieren läßt, reicht es alle mal.
Vielleicht lässt sich daraus ja mehr bauen. :)


Gruß
Matthias

Re: Logs aufbohren

Verfasst: Do 13. Aug 2020, 09:16
von Oldperl
Servus Matthias,

schön, das Du eine Lösung gefunden hast. Ich würde nur vorschlagen es in einer lokalen Konfigurationsdatei (config.local.php) zu machen. Diese würde beim Update nicht überschrieben, und sollte genauso funktionieren.

Gruß aus Franken

Ortwin

Re: Logs aufbohren

Verfasst: Do 13. Aug 2020, 09:20
von mattmarr
Hallo Ortwin,
Oldperl hat geschrieben:
Do 13. Aug 2020, 09:16
schön, das Du eine Lösung gefunden hast.
Hat auch lange genug gedauert. :)
Oldperl hat geschrieben:
Do 13. Aug 2020, 09:16
Ich würde nur vorschlagen es in einer lokalen Konfigurationsdatei (config.local.php) zu machen. Diese würde beim Update nicht überschrieben, und sollte genauso funktionieren.
Wie schon geschrieben, es ist keine schöne Lösung. Erstmal nur als Behelf. Was in Zukunft daraus entsteht, mal schauen.


Gruß
Matthias

Re: Logs aufbohren

Verfasst: Do 13. Aug 2020, 11:09
von Oldperl
mattmarr hat geschrieben:
Do 13. Aug 2020, 09:20
Was in Zukunft daraus entsteht, mal schauen.
Klar, man wird sehen, zumindest habe ich es bei meiner CL mal notiert, wobei die sowieso ein errorlog im Mandanten selbst bekommt, und einen entsprechenden Backendbereich, so in der Art wie mein Plugin phpBO Client Log für die 4.9 :arrow: viewtopic.php?f=99&t=35462

Gruß aus Franken

Ortwin