javascript - 聚合日志并稍后写入文件,而无需直接写入文件

标签 javascript node.js logging redis log4js-node

目前我已经实现了 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 以支持上述功能。

最佳答案

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

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

关于javascript - 聚合日志并稍后写入文件,而无需直接写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42225270/

相关文章:

javascript - 如何全屏显示媒体播放器顶部的文本?

javascript - 异步 JSON.stringify

.net - 配置 .net 核心日志记录以记录请求和响应

用于日志记录的 Java 枚举

c# - 为什么每个人都使用带有 ASP.Net Core 的 ILogger 的记录器包?

php - 清除指向 PHP 生成的 JavaScript 和 CSS 的链接

java - 为什么 JavaScript 被称为 JavaScript,因为它与 Java 无关?

node.js - MongoDB collection.save() 复制对象

javascript - JSON 响应不是来自 php 的对象

node.js - 如何在nodejs中使用curl -F?