Closed onkelandy closed 11 months ago
Ich habe hier versucht, operationlog und memlog in den Core zu bringen, weil durch log_text, etc. schon sehr viel möglich ist, was die Plugins fast obsolet macht. operationlog speichert seit jeher den Cache ins Cache Verzeichnis (self._cachefile = self.get_sh()._cache_dir + self._path). Dann müsste man das dort auch ändern (würde es wenn denn direkt ins log Verzeichnis stecken, nicht..?)
year, month, etc. ist auch eine Funktionalität des datalog Plugins, das sonst aber nichts mehr kann als Core, drum hätt ich das so direkt in den shng Handler rein genommen.
operationlog speichert seit jeher den Cache ins Cache Verzeichnis (self._cachefile = self.get_sh()._cache_dir + self._path)
Ok, dass kann ein Problem im Zusammenspiel z.B. mit der Admin GUI sein, wenn man dort Cache Values verwaltet und im Verzeichnis wird eine non-Item-Cache Datei gefunden. Wenn wir das operationlog demnächst retiren, brauchen wir das aber nicht mehr anzupassen.
Dann müsste man das dort auch ändern (würde es wenn denn direkt ins log Verzeichnis stecken, nicht..?)
Direkt ins log Verzeichnis sollte man das auch nicht schreiben. Dann taucht es evtl. in der Admin GUI auf. Deshalb meinte ich ein Unterverzeichnis zum log Verzeichnis.
year, month, etc. ist auch eine Funktionalität des datalog Plugins, das sonst aber nichts mehr kann als Core, drum hätt ich das so direkt in den shng Handler rein genommen.
Du uast das aber in der Handler Klasse eingebaut. Wenn ein anderer Log-Handler benutzt wird, stehen die Werte nicht zur Verfügung.
OK, Pfadthema sollte dadurch gefixt sein, ja? https://github.com/smarthomeNG/smarthome/pull/606/commits/f26ebeb3b265a2eb891bf0f897a218d3abfcfefb
Zum Thema year - stamp.. Hatte ich kurz verwechselt. Die tatsächliche Idee war hier, Platzhalter für die Dateinamen nutzen zu können. Im Idealfall hätte dann bei einer Rotation die alte Datei noch gleich geheißen und ab sofort würde in die Datei mit dem neuen Datum geloggt werden. Das hat aber tatsächlich nicht geklappt, da müsste man glaub recht tief rein gehen. Vielleicht schaffst du das, kann dir gerne auch mal den gescheiterten Versuch zukommen lassen ;)
Die Funktionalität kommt übrigens vom datalog, wo zB jeden Tag in eine neue CSV Datei mit zB 2023-12-25.log bzw. 2023-12-26.log, etc. geloggt wird.
Diese Variablen also wären im Kontext mit filename = eval(f"f'{filename}'") relevant. Ich wüsste jetzt ehrlicherweise nicht, wo ich das hinsetzen sollte, damit es auch für TimedRotatingFileHandler klappt. Ehrlicherweise machen die Platzhalter ohne funktionierendem Rotating auch nur bedingt Sinn.
Warum
filename = eval(f"f'{filename}'")
und nicht zB
filename = eval("f'" + filename + "'")
?
Finde die zweite Variante deutlich einfacher zu lesen und v.a. zu verstehen...
Hab ich so aus item.py übernommen, kannst aber gern an beiden Stellen updaten txt = eval(f"f'{self._log_text}'")
Hab ich so aus item.py übernommen Wollte nur wissen, ob es einen speziellen Grund für diese Schreibweise gibt, oder erwünschte Nebeneffekte ;)
Stimme für "merge"
Das Verzeichnis ../var/cache ist nur zur Ablage von Item Daten gedacht, bei denen das cache Attribut gesetzt ist. Log Informationen bitte woanders ablegen (z.B. in einem cache Unterverzeichnis von ../var/.log
Wozu sollen
im ShngTimedRotatingFileHandler dienen? Der ShngTimedRotatingFileHandler ist ein 1-zu-1 Ersatz für den Standard TimedRotatingFileHandler, nur dass .log als Extension verwendet wird.