Autor Thema: FileRead und relative Pfade  (Gelesen 679 mal)

Offline Risiko

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 710
FileRead und relative Pfade
« am: 01 März 2020, 14:07:44 »
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.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22556
Antw:FileRead und relative Pfade
« Antwort #1 am: 01 März 2020, 14:37:16 »
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")

Offline Risiko

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 710
Antw:FileRead und relative Pfade
« Antwort #2 am: 01 März 2020, 18:40:24 »
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") ?





Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22556
Antw:FileRead und relative Pfade
« Antwort #3 am: 01 März 2020, 21:24:29 »
Zitat
Gibt es eine Möglichkeit das Logverzeichnis über eine Funktion abzufragen?
Habs doch oben gezeigt. (?)
Zitat
Wä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.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16371
  • s/fhem\.cfg/configDB/g
Antw:FileRead und relative Pfade
« Antwort #4 am: 02 März 2020, 13:47:38 »
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 :)
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22556
Antw:FileRead und relative Pfade
« Antwort #5 am: 02 März 2020, 17:44:45 »
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 :)

Offline Risiko

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 710
Antw:FileRead und relative Pfade
« Antwort #6 am: 03 März 2020, 20:24:21 »
Supi.
Danke.

Offline M.Schulze

  • Commercial User
  • New Member
  • *
  • Beiträge: 31
  • Principal Strategist, Maker
Antw:FileRead und relative Pfade
« Antwort #7 am: 06 März 2020, 13:35:08 »
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
Home Control (HCtrl.de) - Operating Home-Automation as a Service (HAaaS)