FileRead und relative Pfade

Begonnen von Risiko, 01 März 2020, 14:07:44

Vorheriges Thema - Nächstes Thema

Risiko

Hallo Zusammen,

nachdem ich weekprofile auf FileRead und FileWrite umgestellt habe, kommen vermehrt Probleme von Usern beim Versuch aus ./log zu lesen

Can't open ./log/weekprofile_xyz.cfg


Meine Vermutung ist, dass sich das Verhalten bei relativen Pfaden damit geändert hat.
Gibt es eine Möglichkeit den FHEM-Startpfad zu ermitteln bzw. aus der Relativangabe einen absoluten Pfad zu machen?
logdir ist nicht gesetzt. ResolveDateWildcards wird bereits verwendet.

Danke.

Risiko.

rudolfkoenig

FielRead aendert das filename Attribut nicht.
Konvertierung von relativ nach absolut geht meist schief, und ist mAn selten noetig: das log Verzeichnis ist
AttrVal("global", "logdir", AttrVal("global","modpath","")."/log")

Risiko

Ok.

Da ich es auch nicht nachstellen kann, liegt es ggf. doch auf User Seite.

Noch was zum Log-Verzeichnis.
Gibt es eine Möglichkeit das Logverzeichnis über eine Funktion abzufragen?
Wenn logdir nicht gesetzt ist, wird %L in ResolveDateWildcards nicht ersetzt.

Wäre es denn nicht sinnvoller %L trotzdem zu ersetzen (mit AttrVal("global","modpath","")."/log") ?





rudolfkoenig

ZitatGibt es eine Möglichkeit das Logverzeichnis über eine Funktion abzufragen?
Habs doch oben gezeigt. (?)
ZitatWäre es denn nicht sinnvoller %L trotzdem zu ersetzen (mit AttrVal("global","modpath","")."/log") ?
Ja, das waere konsequent, habs auch eingebaut und eingecheckt.
Auch wenn die %L Nutzer vermutlich an einem Hand abzaehlbar sind.

betateilchen

Du könntest die Änderung auch noch in der 01_FHEMWEB.pm FW_fileList(() nachziehen

Aktuell steht dort:

  $fname =~ s/%L/$attr{global}{logdir}/g

(in FileLog existiert ein ähnliches Konstrukt)

Und ich denke, ein paar mehr als fünf User wird es schon geben, die %L kennen und benutzen :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Na gut, ich habe jetzt Logdir() in fhem.pl eingebaut, und sie in FHEMWEB.pm verwendet.
Damit sollten die 7 Benutzer von %L jetzt aber alle gluecklich sein :)

Risiko


M.Schulze

Hallo,

"modpath" ist aber weiterhin kein optimaler Ort zur Ablage persistenter Daten.

Ich empfehle die Einführung eines neuen Attributes "persistentpath" in global.

z.B.:
Starten von FHEM.pl zwingend mit 2 Argumenten, den Attributen configfile und persistentpath,
und ausrollen von persistentpath, zunächst mindestens in in FHEM.pl: persistentpath/configfile, persistentpath/%L/logfile und persistentpath/statefile

Dann setzen "modpath" über "configfile", wie gehabt.

Natürlich sollte in dem persistentpath auch eine standardisierte Ordnerstruktur vereinbart werden (log/, archive/ ...).



Es könne für einen Übergangszeitraum auch mit "persistentpath"="modpath" gestartet werden, um die Einführung zu erleichtern.


Mfg
Muss ich das Licht aus machen?