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 来支持上述功能。

4

1 回答 1

1

不确定执行此操作的正确方法,但似乎您必须编写一个写入 redis 的自定义附加程序。

log4js的内置 appender示例在 github 上。

于 2017-02-14T12:26:49.003 回答