Ankündigung

Einklappen
Keine Ankündigung bisher.

Log-Dateien verschieben/umbenennen bei SH-Start

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Log-Dateien verschieben/umbenennen bei SH-Start

    gibt es eine Möglichkeit (script oder sowas) die Log-Dateien beim Starten von SH umzubenennen oder in einen eigenen Ordner zu verschieben. Bei Testen von Item's, Logiken und Plugins find ich es angenehmer wenn die Logdateien leer sind (Ich verschiebe/lösche diese bisher immer vor dem Start über Dateiexplorer manuell)

    Gruß Ivan

    #2
    Out of the box kann SHNG das nicht.

    Ein Python Script was dir alle Daten unterhalb von ./var/log irgendwo anders hin verschiebt oder was einfach ./var/log in ./var/2023-01-26_08-23-12_log_reboot umbenennt kannst Du sicher selber schreiben.

    Wenn Du SHNG manuell startest, dann kannst Du Dir ja ein Shell Script machen was erst obiges Script aufruft und dann SHNG startet.

    Wenn Du SHNG als Daemon nutzt dann kannst Du die Conf Datei für den service ändern:

    Code:
    [Service]
    ExecStartPre=<path to script>​
    Letzteres habe ich allerdings noch nicht getestet.

    Viel Erfolg :-)

    Kommentar


      #3
      Da ich shng nicht als daemon laufen lasse, sondern in der Konsole, habe ich mir das etwas anders gelöst. Vielleicht kannst du Teile davon verwenden...

      Code:
      #!/bin/bash
      
       #
       # set config options
       #
      
       # shng install dir
       SHNG_DIR=/usr/local/smarthome
      
       # growl API key for notifications
       APIKEY=
      
       # warning log file
       WARNLOG=var/log/smarthome-warnings.log
      
       # save log if crash is suspected
       CRASHLOG=var/log/smarthome-crash.log
      
       #
       # start script
       #
      
       cd $SHNG_DIR
       [ -d var/log/archive ] || mkdir -p var/log/archive
      
       echo Starting run loop for shng as `id -un`...
      
       while true; do
      
               STARTDATE=`date +%Y%m%d%H%M%S`
               echo Running shng at $STARTDATE...
      
       #       python3 bin/smarthome.py -i 2>&1 | tee var/log/smarthome-console.log
               ./smarthome.bin -i 2>&1 | tee var/log/smarthome-console.log
               QUITDATE=`date +%Y%m%d%H%M%S`
      
               echo shng quit at $QUITDATE. Waiting 5 secs...
               sleep 5
      
               if ! tail -n 10 $WARNLOG | grep -q 'SmartHomeNG stopped' ; then
      
                       # suspected crash
                       cp $WARNLOG $CRASHLOG
               fi
      
               # send growl message
               if [ ! -z "$APIKEY" ]; then
                       echo growling...
                       curl --data "apikey=${APIKEY}&application=`hostname`&event=smarthome.py restarted" https://api.prowlapp.com/publicapi/add
               fi
      
               # move logs
               pushd var/log >/dev/null
               for LOG in *.log; do
                       mv $LOG archive/${LOG}.$STARTDATE
               done
               popd >/dev/null
       done
      
       echo shng run loop quit.

      Kommentar


        #4
        hat etwas gedauert aber nun klapp es - danke noch für die beiden Tipps.

        die log's werden auch beim Restart über das Admin-Interface ins "archive" verschoben.

        was ich noch einbauen sollte ist, ältere logs zu löschen, sonst könnte das "archive" voll werden.

        Conf Datei für den service:
        Code:
        [Service]
        ExecStartPre=/bin/bash /usr/local/smarthome/dev/move_log.sh
        das script move_log.sh:
        Code:
        #!/bin/bash
        
        #set -e  # exits if a command fails
        #set -x  #shows the commands that get run
        #set -u  # errors if an variable is referenced before being set
        
        #ExecStartPre=/bin/bash /usr/local/smarthome/dev/move_log.sh
        
        #
        # set config options
        #
        
        # shng install dir
        SHNG_DIR=/usr/local/smarthome
        
        #
        # start script
        #
        foo() {
            [ -d $SHNG_DIR/var/log/archive ] || mkdir -p $SHNG_DIR/var/log/archive
        
            pushd  $SHNG_DIR/var/log >/dev/null
            for LOG in *.log; do
                mv $LOG archive/$(date +"%Y_%m_%d_%H_%M")_$LOG
            done
            popd >/dev/null
        }
        $(foo)
        echo  END move_log

        Kommentar

        Lädt...
        X