2014-04-18 17 views
10

Io uso sempre per lanciare il mio server nodeJs e scelgo il file di log:sempre log e logrotate

sempre -l /home/api/log/api_output.log Iniziamo server.js

Io uso logrotate per spostare file di log ogni giorno (come consigliano qui: NodeJS/Forever archive logs), dopo un giorno il mio elenco è come questo:

-rw-r - r-- 1 root root 0 avril 18 00:00 api_output.log

-rw-r - r-- 1 root root 95492 avril 18 12:01 api_output.log-20140418

Così, la rotazione sta lavorando, ma i log messaggi sono ora scritti in api_output.log-20.140.418, invece di api_output.log

Forse qualcuno mi può aiutare?

+4

Sei sicuro che si sta utilizzando 'copytruncate'? –

+0

copytruncate fai il lavoro grazie – igor

+1

Fantastico. Sarebbe bello se tu potessi rispondere alla tua stessa domanda e spiegare come sei riuscito a risolvere il problema. Ciò aiuterà gli altri utenti che si imbattono nello stesso problema :) –

risposta

10

ho dimenticato opzione copytruncate nel mio file di configurazione, ora sta funzionando:

/etc/logrotate.d/api:

/home/api/log/api_output.log { 
    #size 50k 
    daily 
    dateext 
    missingok 
    rotate 7 
    compress 
    delaycompress 
    notifempty 
    #create 644 root 
    copytruncate 
} 
+0

I miei registri di sempre continuano a crescere per sempre cosa posso fare? Anche la logrotation si aggiunge a questo, continuano a diventare sempre più grandi. – JustGoscha

+1

Attenzione! 'copytruncate' può rilasciare voci di registro. Nello specifico, le voci di registro scritte tra la copia e le operazioni di troncamento. –

+1

C'è un poblem: quando logrotate logrotates per sempre non è più in grado di scrivere registri ... – giuseppe

0

penso che sia a causa del flusso di vita tra l'eternità e il file di registro.

utilizza sempre il flusso di file per registrare il file. e hai rinominato questo file con logrotate. ma lo streaming non cambia. quindi i messaggi di log sono stati scritti in api_output.log-20140418.

se si desidera modificare lo stream, è necessario ruotare il codice node.js o utilizzare la pipeline.

+0

Sì, era quello ma l'opzione copytruncate evitava il problema! – igor