Zitat von Onkelandy
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Neues Plugin OperationLog
Einklappen
X
-
plugin.conf
Code:[Nachtlogger] class_name = OperationLog class_path = plugins.operationlog name = Nachtlogger maxlen = 20 cache = yes
Code:sh.Nachtlogger('INFO', 'Test')
Kommentar
-
Hi,
kurze Frage: Was macht denn der cache in diesem Zusammenhang? Das habe ich irgendwie nicht gepeilt, wieso ein cache für ein Log wichtig ist...
Gruß, Waldemar
Kommentar
-
-
Zitat von Onkelandy Beitrag anzeigenDanke für das Plugin, ist echt super! Allerdings bekomme ich immer eine Fehlermeldung im Smarthome Log - dabei werden die Einträge brav sowohl in der Visu angezeigt als auch in das operationlog-File geschrieben.. Any ideas?
fix-operationlog-cacheitem-maxlen
Edit 02.02.2016: aktueller Version
Viele Grüße,
Jan
Kommentar
-
Hi, so ist es wohl, nach dem Neustart wird der Cache eingelesen und dann hast du die Liste wieder. Gruß Waldemar
Kommentar
-
Hi,
es werden bis zu maxlen Anzahl Logeinträge im Speicher gehalten die auch vom Visu abgerufen werden kann. Mit cache=true wird die liste, genau so wie SmartHome items mit den eintrag cache=true, bei Änderungen in eine Datei gespeichert. Nach ein Neustart von SmartHome werden die Logeinträge vom cache ins Speicher gelesen und sind damit weiterhin in der Visu darstellbar.
@Onkelandy: Ich habe Deine Konfiguration gerade bei mir getestet und es geht. Funktioniert denn cache=true für Items bei Dir? Wenn nicht, könnte es sein, dass der user worunter smarthome.py läuft keine schreibrechte in das Cacheverzeichnis hat? Allerdings müsstest Du das im log sehen...
Viele Grüße,
Jan
Kommentar
-
Hallo JanT,
habe Dein Plugin eingebaut und danach viele Fehlermeldungen erhalten. Ich konnte daraus schließen, das das Verzeichnis /var/log/operationlog/ fehlte. Nach Anlegen des Verzeichnisses funktionierte es. Ich ging davon aus, das das Verzeichnis vom Plugin angelegt wird. Die Änderungen werden richtig in die Dateien Z.B., "2016-01-31-mylogname1.log" und "yearly_log-mylogname2-2016.log" geschrieben.
Noch eine Frage: Ich bekomme die Darstellung der Logs in SmartVisu noch nicht hin. Wie muß der Code aussehen? Vielleicht hast Du ein Beispiel für mich?
Gruß
Hans
Kommentar
-
Hallo Hans,
Zitat von Tontechniker Beitrag anzeigen...Ich ging davon aus, das das Verzeichnis vom Plugin angelegt wird.
Zitat von Tontechniker Beitrag anzeigenIch bekomme die Darstellung der Logs in SmartVisu noch nicht hin. Wie muß der Code aussehen? Vielleicht hast Du ein Beispiel für
Code:<h3>Log mylogname1</h3> {% import "status.html" as status %} {{status.log('mylogger1', 'mylogname1', 10) }} <h3>Log mylogname2</h3> {% import "status.html" as status %} {{status.log('mylogger2', 'mylogname2', 10) }}
JanZuletzt geändert von JanT; 01.02.2016, 00:00.
Kommentar
-
Hi,
ich habe python programmierung geübt. Rausgekommen ist ein einigermaßen flexiblen Möglichkeit die Logeinträge bei item update zu definieren und zu filtern bei welche Werte ein Logeintrag erzeugt werden soll.
Ich fasse mich hier kurz und zeige nur Beispielkonfigurationen und das Ergebnis (Bild unten). Für weitere Informationen, siehe das bei GitHub zugehörige README.md. die aktuelle Version ist:
feature-operationlog-plugin-add-itemlogtext
Bitte testen. Das Modul ist komplexer geworden und es gibt bestimmt Konfigurationsfälle die ich noch nicht richtig abfange.
Viele Grüße,
Jan
Code:[foo] name = Foo [[bar]] type = num olog = mylogname1 # olog_rules = *:value # olog_txt = {id} = {value} # olog_level = INFO [[bar1]] type = num name = Bar1 olog = mylogname1 olog_rules = 2:two | 0:zero | 1:one | *:value olog_txt = This is a log text for item with name {name} and value {value} mapped to {mvalue}, parent item name is {pname} olog_level = ERROR [[bar2]] type = bool name = Bar2 olog = mylogname1 olog_rules = True:the value is true | False:the value is false olog_txt = This is a log text for {value} mapped to '{mvalue}', {name} changed after {age} seconds olog_level = warning [[bar3]] type = str name = Bar3 olog = mylogname1 olog_rules = t1:text string number one | t2:text string number two | *:value olog_txt = text {value} is mapped to logtext '{mvalue}', expression with syntax errors: {eval=sh.this.item.doesnotexist()*/+-42} olog_level = critical [[bar4]] type = num name = Bar4 olog = mylogname1 olog_rules = lowlim:-1.0 | highlim:10.0 olog_txt = Item with name {name} has lowlim={lowlim} <= value={value} < highlim={highlim}, the value {eval='increased' if sh.foo.bar4() > sh.foo.bar4.prev_value() else 'decreased'} by {eval=round(abs(sh.foo.bar4() -\ sh.foo.bar4.prev_value()), 3)} olog_level = info
You do not have permission to view this gallery.
This gallery has 1 photos.
- Likes 1
Kommentar
-
Oh ja.. Meine ersten Tests waren erfolgreich. Das ist wirklich sehr cool, vielen Dank!
Was allerdings nicht geklappt hat: wenn der Item-Wert einen "komplexeren" String annimmt.. Also zB:
Code:['ekey_string'] knx_listen = 10/0/1 type = str visu_acl = rw knx_dpt = 24 cache=true enforce_updates = yes olog = Anwesenheitslogger olog_rules = '0xaa/Mann a b C':Mann | '0xcf/Frau a b C':Frau olog_txt = {mvalue} ist laut ekey zuhause. olog_level = INFO
Code:2016-02-04 15:49:12,335 ERROR Main Item ekey_string: problem running <bound method OperationLog.update_item of <plugins.operationlog.OperationLog object at 0x763058b0>>: 'SmartHome' object has no attribute 'id' -- item.py:__update:382 Traceback (most recent call last): File "/usr/smarthome/lib/item.py", line 380, in __update method(self, caller, source, dest) File "/usr/smarthome/plugins/operationlog/__init__.py", line 240, in update_item 'pid': item.return_parent().id(), AttributeError: 'SmartHome' object has no attribute 'id'
Zuletzt geändert von Onkelandy; 04.02.2016, 16:40.
Kommentar
Kommentar