2017-02-14 85 views
0

目前我已经实现了express.js应用程序,并且为了记录目的而添加了log4js记录器。现在我想将日志写入Redis,然后后台工作者不断从Redis列表中提取日志,并将这些日志写入本地日志文件。聚合日志并稍后写入文件而不直接写入文件

App.js看起来像这样

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(); 
 
};

和日志配置文件应该是这样的。

{ 
 
    "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()" 
 
     } 
 
     } 
 
    } 
 
    ] 
 
}

我想知道如何添加的Redis支持上述功能。

回答

1

不确定正确的方式来做到这一点,但它似乎你将不得不写一个写入redis的自定义appender。

log4js的built-in appenders的示例在github上。

+0

确实,我找到了一个增加了对这个支持的软件包,但是请注意如何配置这个logstash server conf,如果你知道的话请告诉我。感谢您的宝贵意见 https://github.com/beyond5959/log4js-logstash-redis –