Praxis: alte Logfiles löschen

Den Log-Ordner kann man mit folgenden Skript bereinigen:


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : cleanUpLogs.ips.php
Trigger  : startup
Interval : 
*/

   $dir = "logs/";
$daysToKeep = 7;

if ($handle = opendir($dir)) {     
 $deleteBefore = time() - 86400 * $daysToKeep;
 while (false !== ($file = readdir($handle))) {        
  $creationTime = (int)str_replace("logfile", "", str_replace(".log", "", $file));
  if ( $creationTime > 0 && $creationTime < $deleteBefore)
   unlink($dir.$file);        
 }        
 closedir($handle);    
}
?>

Das Skript sollte man vom Startup-Skript aus aufrufen.

Hallo Bdaum,

dein Script hat bei mir irgendwie nicht funktioniert.

Ich hab es mal ein bisschen geändert.

$dir = „logs/“;
$daysToKeep = 5;

if ($handle = opendir($dir)) {
$deleteBefore = time() - 86400 * $daysToKeep;
while (false==!($file = readdir($handle))) {
$creationTime = (int)str_replace(„logfile“, „“, str_replace(".log", „“, $file));
if ( $creationTime > 0 && $creationTime < $deleteBefore)
unlink($dir.$file);
}
closedir($handle);
}

so sollte es dann funktionieren :wink:

Grüße
Thomas

jo, jetzt klappts :slight_smile:

Mal ne Frage an paresy:

nach welchen Regeln, bzw. wie oft wird denn der file name der logfile generiert/geändert?

Ich hatte bis jetzt das CleanUpLogs script immer 1x um Mitternacht aufgerufen und heute Nacht wollte dies wohl versuchen das einzig vorhandene logfile zu löschen. Irgendwie hatte ich dann unzählige Error messages und konnte sehen, dass IPS - ich glaube - 1,5 Stunden mit sich selbst beschäftigt war und nicht seinen normalen Verpflichtungen nachgegangen ist.

Leider erst dann habe ich den Hinweis

Das Skript sollte man vom Startup-Skript aus aufrufen.

gesehen :frowning:

Gruss Dieter

Das Logfile wird zurzeit beim Starten von IPS angelegt.

Torro hatte aber schonmal gewünscht, um Mitternacht die Logfiles zu rotieren… (steht noch auf meinem Zettel)

Grüße, paresy

Hallo,

ja genau, und dann am besten auch gleich alle Files in diesem Verzeichnis :stuck_out_tongue:

Gruss Torro

Hallo,

ich habe mal das Script etwas angepasst, da ja inzwischen bei Nutzung des WIIPS weitere Logfiles angelegt werden:


<?  
/*  
*******************************  
IP-SYMCON Event Scripting  
*******************************  
File     : cleanUpLogs.ips.php  
Trigger  : startup  
Interval :  
*/  
$dir = str_replace( '\\','/',IPS_GetKernelDir() ) . "logs/";
$daysToKeep = 7;  
  
if ( $handle = opendir($dir) ) {  
    $deleteBefore = time() - 86400 * $daysToKeep;  
    while (False !== ($file = readdir($handle) ) ) {  
          $creationTime = (int)str_replace("logfile", "", str_replace(".log", "", $file) );  
      if ( $creationTime == 0 ) {
             $creationTime = (int)str_replace("wiips", "", str_replace(".log", "", $file) );
      }
          if ( $creationTime > 0 && $creationTime < $deleteBefore) {
              unlink($dir.$file);  
         }  
    }
    closedir($handle);  
}
?>

Gruss Torro

Leider kann man IPS offenbar die Logfiles nicht unter den Füssen wegziehen.
Das Script folgende bricht ab, wenn es um die aktuelle Logdatei geht (z.B. access_xxx.log, logfile_xxx.log)


echo "CleanUp Logs...";
setlocale(LC_TIME, "de_DE");
$dir="c:/Programme/IP-SYMCON/logs/";
chdir($dir);
$daysToKeep = 7;
$deleteBefore = time() - 86400 * $daysToKeep;
$logs=glob("*.log");
foreach ($logs as $file) {
        $bn=basename($file,'.log');
        $creationTime = filectime($file);
     	if (!preg_match('/\.[\d_]+\.log$/',$file)) {
     			$newname=$bn.'.'.date('Ymd_His',$creationTime).'.log';
    			if (@rename($file,$newname))
    			$file=$newname;
    	}
         if ( $creationTime > 0 && $creationTime < $deleteBefore) {
              	unlink($file);
        }
    	
}

Da ich das auch nicht von aussen (z.B. IPS stoppen und starten) machen möchte, wäre es vieleicht doch ganz nett, wenn so ein Logrotate von Hause aus (z.B. in Daily_Jobs) eingebaut wäre.

Tommi

Hallo,
gibt es keine möglichkeit die Log-Files ganz auszuschalten?

bei mir schwillt das logfile in 3 Stunden auf 7MB an, das macht am Tag fast 60MB und eigentlich brauche ich die LogFiles nicht.

Bis ein fehler auftritt…

Ein master ‚debug‘ switch (IP_Symcon.exe -d) wäre wunschenswert
oder besser : backwards compatibility -> IP_Symcon -nl (NoLogs)

Die nächste IPS Version rotiert die Logfiles jeden Tag und löscht Files älter als 7 Tage automatisch.

Grüße, paresy