Hallo,
ich habe aus den tiefen des Internets eine Anleitung gefunden wie ich
node automatisch als Service anlegen kann und alle Ereignisse in eine
Logdatei schreiben kann, zwar ist momentan noch viel Debugging
enthalten... aber trotzdem fallen am Tag ein paar MB an... da der PI
24/7 laufen soll habe ich dann nach n paar Monaten das System vermutlich
"lahm" gelegt weil VOLL :D
hier ist die Anleitung:
https://www.sweetpi.de/blog/41/node-js-installation-auf-dem-raspberry-pi
der part:
1
#!/bin/sh
2
#
3
# Runs node.js against script, logging to a logfile. We have to do
4
# this because there's no way to call node directly and have start-stop-daemon
5
# redirect stdout to a logfile.
6
#
7
8
LOGFILE=/home/baer/node.log
9
NODE=/usr/local/bin/node
10
WORKING_DIR=/var/sock
11
JAVASCRIPT=server.js
12
13
#pidfile must be first argument
14
PIDFILE=$1
15
16
#cd into working dir:
17
cd${WORKING_DIR}
18
# Fork off node into the background and log to a file
müsste zuständig sein um bei mir die Logdatei anzulegen...
kann mir jemand helfen, das script so umzuformen, dass die Logdatei
jeden Tag "weggesichert" wird (/archiv/log_13012017.log) und
idealerweise die Logdaten welche älter als eine Woche sind gelöscht?
Vielen Dank
Warum passt du dir dafür nicht logrotate oder einen ähnlichen dienst an,
der dürfte ja eh vorhanden sein, der macht genau sowas z.b. jeden tag
die Logs in nen Archiv packen und nach einer zeit automatisch löschen.
error: error opening /home/baer/node.log.8: No such file or directory
ein ls -l sieht so aus:
1
-rw-r--r-- 1 root root 1056 Jan 24 12:35 node.log
2
-rw-r--r-- 1 root root 7480 Jan 18 17:50 node.log20170117
3
-rw-r--r-- 1 root root 16797 Jan 21 09:48 node.log20170121
4
-rw-r--r-- 1 root root 16841 Jan 22 18:43 node.log20170122
5
-rw-r--r-- 1 root root 12165 Jan 24 12:22 node.log20170124
die "node.log" files mit einem Datum hinten dran hab ich manuell
erstellt, soll aber künftig natürlich nicht so sein...
> leider werden meine logs nicht kopiert, verschoben oder umbenannt...
hat jemand eine Idee für mich?
Baeri B. schrieb:> die "node.log" files mit einem Datum hinten dran hab ich manuell> erstellt, soll aber künftig natürlich nicht so sein...>>> leider werden meine logs nicht kopiert, verschoben oder umbenannt...>> hat jemand eine Idee für mich?
Ja das kanns du z.B. so machen:
var dt = new Date(Date( ));
var newmsg = {
'filename': "/var/ramdisk/Logfile_" +
dt.getFullYear().toString() + (dt.getMonth()+1).toString() +
dt.getDate().toString() + ".log"
}
return newmsg
Diese msg übergibst du an das file-objekt, dann wird für jeden Tag ein
File mit Datum erzeugt. Den Pfad muss du natürlich noch anpassen.
@morob: naja, klar das hab ich, aber das ist ja nur dafür gedacht um
node neu zu starten oder zu beenden...
=> aber node soll natürlich "ununterbrochen" laufen...
meine Idee war es auch hier die Logdatei einfach mit Datum zu versehen
und jeden tag einfach "neuzustarten" ... aber 1. muss ich mich dann noch
um das löschen kümmern und 2. wissen wie man n datum mit in den namen
verbaut...
> da ist die Lösung mit Logrotate irgendwie schöner (so finde ich spontan).
Leider bin ich mit der Linux und sh basis noch ein rechter Anfänger...
ich habe nun schon einiges in C/C++ gelernt aber irgendwie ist mir das
zu Umständlich hierfür ein C zu schreiben welches dann über einen
Cronjob läuft
=> vor allem wenn doch Logrotate schon da ist...
Logrotate funktioniert auch... die Systemlogs werden sauber
weggesichert...
diese postrotate ist das was gemacht werden soll, wenn die logfiles weg
gesichert wurden
wenn node kein reload macht, musst du stoppen starten, was im normalfall
innerhalb von 1 bis 3 sekunden geht.