Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lib.log: introduce mapping and cache possibilites for memory logs #606

Merged
merged 5 commits into from
Dec 20, 2023

Conversation

onkelandy
Copy link
Member

No description provided.

@msinn
Copy link
Member

msinn commented Dec 16, 2023

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

        year = datetime.datetime.now().strftime("%Y")
        month = datetime.datetime.now().strftime("%m")
        day = datetime.datetime.now().strftime("%d")
        hour = datetime.datetime.now().strftime("%H")
        stamp = datetime.datetime.now().timestamp()

im ShngTimedRotatingFileHandler dienen? Der ShngTimedRotatingFileHandler ist ein 1-zu-1 Ersatz für den Standard TimedRotatingFileHandler, nur dass .log als Extension verwendet wird.

@onkelandy
Copy link
Member Author

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.

@msinn
Copy link
Member

msinn commented Dec 16, 2023

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.

@onkelandy
Copy link
Member Author

OK, Pfadthema sollte dadurch gefixt sein, ja?
f26ebeb

@onkelandy
Copy link
Member Author

onkelandy commented Dec 16, 2023

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.

@Morg42
Copy link
Member

Morg42 commented Dec 19, 2023

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...

@onkelandy
Copy link
Member Author

Hab ich so aus item.py übernommen, kannst aber gern an beiden Stellen updaten
txt = eval(f"f'{self._log_text}'")

@Morg42
Copy link
Member

Morg42 commented Dec 20, 2023

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"

@msinn msinn merged commit 53e1ba2 into smarthomeNG:develop Dec 20, 2023
5 checks passed
@onkelandy onkelandy deleted the lib.log branch December 29, 2023 19:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants