2017-02-14 1 views
0

Derzeit habe ich und express.js Anwendung implementiert und log4js Logger für Protokollierungszwecke hinzugefügt. Jetzt wollte ich Logs in Redis und dann in den Background Worker schreiben, der kontinuierlich Logs aus der Redis-Liste holt und diese Logs in eine lokale Log-Datei schreibt.Aggregieren Sie Protokolle und schreiben Sie später in Dateien, ohne direkt in Dateien zu schreiben

App.js würde so aussehen

import { getLogger, configure } from 'log4js'; 
 
import {initServer} from './middleware/Express' 
 
import { initRoutes } from './routes/RouterAggregator'; 
 

 
configure('./src/config/log4js-config.json'); 
 
const logger = getLogger("app"); 
 

 
const init =()=> { 
 
    logger.info("Initializing Application"); 
 
    initServer(); 
 
    initRoutes(); 
 
};

und Konfigurationsdatei protokollieren würde wie folgt aussehen.

{ 
 
    "appenders": [ 
 
    { 
 
     "type": "console", 
 
     "layout": { 
 
     "type": "pattern", 
 
     "pattern": "[%d] [%[%p%]] %c {%x{ln}} - %m", 
 
     "tokens": { 
 
      "ln" : "loggerFunction()" 
 
     } 
 
     } 
 
    }, 
 
    { 
 
     "type": "dateFile", 
 
     "filename": "log/access.log", 
 
     "pattern": "-yyyy-MM-dd", 
 
     "alwaysIncludePattern": false, 
 
     "category": "http", 
 
     "layout": { 
 
     "type" : "pattern", 
 
     "pattern": "[%d] [%p] %c {%x{ln}} - %m", 
 
     "tokens": { 
 
      "ln" : "loggerFunction()" 
 
     } 
 
     } 
 
    }, 
 
    { 
 
     "type": "dateFile", 
 
     "filename": "log/app.log", 
 
     "maxLogSize": 10485760, 
 
     "numBackups": 3, 
 
     "alwaysIncludePattern": false, 
 
     "layout": { 
 
     "type" : "pattern", 
 
     "pattern": "[%d] [%p] %c {%x{ln}} - %m", 
 
     "tokens": { 
 
      "ln" : "loggerFunction()" 
 
     } 
 
     } 
 
    }, 
 
    { 
 
     "type": "logLevelFilter", 
 
     "level": "ERROR", 
 
     "appender": { 
 
     "type": "file", 
 
     "filename": "log/errors.log" 
 
     }, 
 
     "layout": { 
 
     "type" : "pattern", 
 
     "pattern": "[%d] [%p] %c {%x{ln}} - %m", 
 
     "tokens": { 
 
      "ln" : "loggerFunction()" 
 
     } 
 
     } 
 
    } 
 
    ] 
 
}

Ich möchte wissen, wie redis hinzufügen oben genannten Funktionen zu unterstützen.

Antwort

1

Nicht sicher der richtige Weg, um dies zu tun, aber es scheint, dass Sie einen benutzerdefinierten Appender schreiben müssen, um Redis zu schreiben.

Beispiel built-in appenders für log4js sind auf GitHub.

+0

True, ich fand ein Paket, das Unterstützung für dieses hinzugefügt hat, aber beachten Sie, wie Sie dieses Logstash-Server-Conf konfigurieren, wenn Sie wissen, lassen Sie es mich wissen. Danke für Ihre wertvolle Eingabe https://github.com/beyond5959/log4js-logstash-redis –

Verwandte Themen