[2/4] nodewatcher: Output to stderr instead of log file

Submitted by Fabian Blaese on April 19, 2020, 1:40 p.m.

Details

Message ID 20200419134020.1389582-2-fabian@blaese.de
State Superseded
Headers show

Commit Message

Fabian Blaese April 19, 2020, 1:40 p.m.
Maintaining a logfile manually is complicated and
has no major improvements over just logging to stderr,
because nodewatcher is no deamon and can be run manually
for debugging purposes.

Also, the debug output from subscripts currently is not
written to the log file anyway and the debug level is not
used eiher.

Therefore, the file logging and debug level is removed
from nodewatcher, which simplifies the code a bit.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
---
 .../files/usr/sbin/nodewatcher                | 26 ++-----------------
 1 file changed, 2 insertions(+), 24 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
index 8da7877..1226f49 100755
--- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
+++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
@@ -14,28 +14,10 @@  trap "lock -u \"$lockfile\"" INT TERM EXIT
 
 [ -s /etc/config/nodewatcher ] || exit 1
 
-SCRIPT_ERROR_LEVEL=$(uci get nodewatcher.@script[0].error_level)
-SCRIPT_LOGFILE=$(uci get nodewatcher.@script[0].logfile)
 SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file)
 
-if [ "$SCRIPT_ERROR_LEVEL" -gt "1" ]; then
-	debug() {
-		echo "$(date): $1" >> "$SCRIPT_LOGFILE"
-	}
-else
-	debug() {
-		:
-	}
-fi
-
-#This method checks if the log file has become too big and deletes the first X lines
-delete_log() {
-	if [ -f "$SCRIPT_LOGFILE" ]; then
-		if [ "$(find "$SCRIPT_LOGFILE" -printf "%s")" -gt "6000" ]; then
-			sed -i '1,60d' "$SCRIPT_LOGFILE"
-			debug "Logfile has been made smaller"
-		fi
-	fi
+debug() {
+	(>&2 echo "$(date): $1")
 }
 
 #This method generates the crawl data XML file that is being fetched by netmon
@@ -60,10 +42,6 @@  crawl() {
 
 LANG=C
 
-#Prüft ob das logfile zu groß geworden ist
-debug "Check logfile"
-delete_log
-
 #Erzeugt die statusdaten
 debug "Generate actual status data"
 crawl

Comments

Adrian Schmutzler April 19, 2020, 2:14 p.m.
Hat zwar etwas gedauert, bis ich es verstanden hatte, aber finde ich sehr gut.

Dass die Subscripts so eh nach stderr schreiben, war mir gar nicht mehr bewusst.

Für stderr sollten wir dann aber noch ein "nodewatcher" Prefix in die debug() Funktion einbauen (im Patch 1/4).
Es wäre auch zu überlegen, ob man eine nodewatcher library Datei nimmt, dort die debug Funktion reinwirft und dann nur die (mini-)Library einbindet, damit man nicht immer alles zigmal ändern muss.

Bitte für diesen Patch noch die Einträge in https://github.com/FreifunkFranken/firmware/blob/master/src/packages/fff/fff-nodewatcher/files/etc/uci-defaults/93-fff-nodewatcher löschen.

Reviewed-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>

OT: Ich würde sogar überlegen, ob man das DATA_FILE auch irgendwann wegwirft. Aber das ist nicht eilig.

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Fabian Bläse
> Sent: Sonntag, 19. April 2020 15:40
> To: franken-dev@freifunk.net
> Subject: [PATCH 2/4] nodewatcher: Output to stderr instead of log file
> 
> Maintaining a logfile manually is complicated and has no major improvements
> over just logging to stderr, because nodewatcher is no deamon and can be
> run manually for debugging purposes.
> 
> Also, the debug output from subscripts currently is not written to the log file
> anyway and the debug level is not used eiher.
> 
> Therefore, the file logging and debug level is removed from nodewatcher,
> which simplifies the code a bit.
> 
> Signed-off-by: Fabian Bläse <fabian@blaese.de>
> ---
>  .../files/usr/sbin/nodewatcher                | 26 ++-----------------
>  1 file changed, 2 insertions(+), 24 deletions(-)
> 
> diff --git a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> index 8da7877..1226f49 100755
> --- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> +++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> @@ -14,28 +14,10 @@ trap "lock -u \"$lockfile\"" INT TERM EXIT
> 
>  [ -s /etc/config/nodewatcher ] || exit 1
> 
> -SCRIPT_ERROR_LEVEL=$(uci get nodewatcher.@script[0].error_level)
> -SCRIPT_LOGFILE=$(uci get nodewatcher.@script[0].logfile)
> SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file)
> 
> -if [ "$SCRIPT_ERROR_LEVEL" -gt "1" ]; then
> -	debug() {
> -		echo "$(date): $1" >> "$SCRIPT_LOGFILE"
> -	}
> -else
> -	debug() {
> -		:
> -	}
> -fi
> -
> -#This method checks if the log file has become too big and deletes the first X
> lines
> -delete_log() {
> -	if [ -f "$SCRIPT_LOGFILE" ]; then
> -		if [ "$(find "$SCRIPT_LOGFILE" -printf "%s")" -gt "6000" ]; then
> -			sed -i '1,60d' "$SCRIPT_LOGFILE"
> -			debug "Logfile has been made smaller"
> -		fi
> -	fi
> +debug() {
> +	(>&2 echo "$(date): $1")
>  }
> 
>  #This method generates the crawl data XML file that is being fetched by
> netmon @@ -60,10 +42,6 @@ crawl() {
> 
>  LANG=C
> 
> -#Prüft ob das logfile zu groß geworden ist -debug "Check logfile"
> -delete_log
> -
>  #Erzeugt die statusdaten
>  debug "Generate actual status data"
>  crawl
> --
> 2.26.0
Adrian Schmutzler April 19, 2020, 3:13 p.m.
Noch als Ergänzung:

Man könnte auch überlegen, ob man die /etc/config/nodewatcher aufgibt und die paar Parameter in die /etc/config/fff schreibt (in einen eigenen Block).

Damit würden sie auch updatesicher. Das ist aber eher ein Thema für später und nicht unbedingt für das kommende Release.

Grüße

Adrian
Fabian Blaese April 19, 2020, 3:23 p.m.
On 19.04.20 16:14, mail@adrianschmutzler.de wrote:
> Für stderr sollten wir dann aber noch ein "nodewatcher" Prefix in die debug() Funktion einbauen (im Patch 1/4).
> Es wäre auch zu überlegen, ob man eine nodewatcher library Datei nimmt, dort die debug Funktion reinwirft und dann nur die (mini-)Library einbindet, damit man nicht immer alles zigmal ändern muss.
Können wir gern tun. Bei mir sagt die Gewohnheit, dass Programmname und Uhrzeit vom loggingsystem hinzugefügt werden..
OpenWrt tut das soweit ich weiß auch für die mit procd gestarteten Prozesse. Jetzt wird aber nodewatcher vom Cron gestartet. Weiß jemand, wie sich das da verhält?

> Bitte für diesen Patch noch die Einträge in https://github.com/FreifunkFranken/firmware/blob/master/src/packages/fff/fff-nodewatcher/files/etc/uci-defaults/93-fff-nodewatcher löschen.
Verdammt, das hab ich vergessen.

Gruß
Fabian
Adrian Schmutzler April 19, 2020, 3:44 p.m.
> Können wir gern tun. Bei mir sagt die Gewohnheit, dass Programmname und Uhrzeit vom loggingsystem hinzugefügt werden.. 
> OpenWrt tut das soweit ich weiß auch für die mit procd gestarteten Prozesse. Jetzt wird aber nodewatcher vom Cron gestartet. Weiß jemand, wie sich das da verhält?

Ich habe gerade auf meinem Gateway mit 19.07.2+ folgendes in den nodewatcher geschrieben:

>&2 echo "test123"

Führt man danach den nodewatcher aus, gibt der test123 aus.

Wird der nodewatcher vom micrond ausgeführt, passiert ... nichts. Kein Eintrag im logread. Gibt’s noch ein anderes Log irgendwo?

Grüße

Adrian
Robert Langhammer April 19, 2020, 6:58 p.m.
hallo Adrian,

Am 19.04.20 um 17:44 schrieb mail@adrianschmutzler.de:
> Ich habe gerade auf meinem Gateway mit 19.07.2+ folgendes in den
> nodewatcher geschrieben:
>> &2 echo "test123"
> Führt man danach den nodewatcher aus, gibt der test123 aus.
>
> Wird der nodewatcher vom micrond ausgeführt, passiert ... nichts. Kein Eintrag im logread. Gibt’s noch ein anderes Log irgendwo?

Nein, der micrond und seine Kinder schreiben alles nach /dev/null. Hier
am Beispiel Alfred, den ich abgefangen habe:

root@GW-Werncafe:/proc/10158# ls -l fd
lrwx------    1 root     root            64 Apr 19 20:45 0 -> /dev/null
lrwx------    1 root     root            64 Apr 19 20:45 1 -> /dev/null
l-wx------    1 root     root            64 Apr 19 20:45 12 -> pipe:[1375]
lrwx------    1 root     root            64 Apr 19 20:45 2 -> /dev/null

Wenn man aus einem Skript heraus nach syslog schreiben will, hilft das
Tool logger.

Viele Grüße
Robert

>
> Grüße
>
> Adrian