Hallo,
ich verwende bei FileLog logfile mit mit '/opt/fhem/log/....-%Y.log' und createGluedFile =1.
nun hab ich das Problem, dass
"get fl_wasserverbrauch CURRENT - 2017-01-01 2019-01-12 4:Day:0"
nur die Daten aus 2017 und 2019 liefert - 2018 fehlt nun in den Plots.
meiner Meinung ist da ein Fehler in 92_FileLog.pm.
ich habe in der Funktion FileLog_Get($@) einige Zeilen erweitert (markiert mit #)
FileLog_Get($@)
{
....
if(AttrVal($name, "createGluedFile", 0)) {
if($to =~ m/^(....)-(..)-(..)/) {
my $linf_to = $hash->{logfile};
my $Ys=$Y; ############## zeile 644
my $ms=$m; ##############
my ($Y,$m,$d) = ($1,$2,$3);
$linf_to=expandFileWildcards($linf_to,$Y,$m,$d);
# Log3 $name, 4, "FileLog: $linf -> $linf_to # $Ys $ms -> $Y $m"; ##############
if($linf ne $linf_to){ # use to log files
$tempread=$linf_to.".transit.temp.log";
if(open(my $temp,'>',$tempread)){
if(open(my $i,'<',$linf)){
print $temp join("",<$i>);
close($i);
}
for (my $Yt=$Ys+1; $Yt<$Y; $Yt++) #############
{ #############
my $linf_temp = $hash->{logfile}; #############
my $linf_temp=expandFileWildcards($linf_temp,$Yt,1,1); #############
#Log3 $name, 4, "FileLog: $Yt --> read $linf_temp"; #############
if(open(my $i,'<',$linf_temp)){ #############
print $temp join("",<$i>); #############
close($i); #############
} #############
} #############
if(open(my $i,'<',$linf_to)){
print $temp join("",<$i>);
close($i);
}
$linf=$tempread;
close($temp);
}
}
}
....
}
es funktiomiert nun bei meinen Jahres-logs.
@Rudi: kannst du bitte das übernehmen?
Danke
Didi
Zitatmeiner Meinung ist da ein Fehler in 92_FileLog.pm.
Kann man so sehen :)
Ich meine, createGluedFile sichert nur das Kleben von "nebeneinander" liegenden Dateien zu, die Doku spricht auch nur von 2 Dateien.
Das Problem mit deinem Patch ist, dass es nur bei Jahreslogs hilft, und die anderen Platzhalter (%d %m %w %j %U %W) ausser Acht laesst.
Ich habe einen relativ einfachen Algorithmus im Kopf, was aber fuer die bisherigen Faelle etwas mehr performance kostet.
Wenn noch jemanden gibt, der sowas braucht (bitte hier melden), dann baue ich das ein.
ja ich weiss, dass mein Patch nur bei Jahres-logs funktioniert.
Ich würde auch ganz gut mit einem Performanceverlust leben können - Hauptsache die Daten sind richtig.
danke
Ich habe eine Version eingecheckt, bitte um Feedback.
funktioniert perfekt und der Performanceverlust ist bei mir nicht spürbar.
danke Rudi!