Winston Logger-排除日志记录到控制台传输的syslog

时间:2020-10-01 04:59:06

标签: node.js winston

我有一个在EC2 Redhat上运行的节点应用程序。 它正在记录到syslog,并且日志太大。 但是,该配置尚未定义任何系统日志传输。

const logger = createLogger({
  // change level if in dev environment versus production
  level: env === "development" ? "verbose" : "info",
  format: format.combine(
    format.timestamp({
      format: "YYYY-MM-DD HH:mm:ss",
    }),
    format.printf((info) => `${info.timestamp} ${info.level}: ${info.message}`)
  ),
  transports: [
    new transports.Console({
      level: "info",
      format: format.combine(
        format.colorize(),
        format.printf(
          (info) => `${info.timestamp} ${info.level}: ${info.message}`
        )
      ),
    }),
    dailyRotateFileTransport,
  ],
})

有没有办法禁用记录到syslog的日志?理想情况下,来自节点应用程序。但是,如果不是,则来自syslog配置本身。

2 个答案:

答案 0 :(得分:1)

您的应用正在登录控制台。我假设该应用程序不是手动运行,而是通过 systemd 配置及其将 stdout/stderr 定向到 journald 或将输出写入的任何位置。

这真的不是 Node/Winston 问题。您可以更改您的应用程序记录到的位置(切换到带有日志轮换的文件传输,并停止转储到控制台),减少您的记录量(实际使用调试等......适当地这样输出不会变得太大),或者先看看你的应用是如何运行的,然后再考虑一下(你想让 systemd 笨拙地为你处理日志吗?)

当然,我假设您正在使用 systemd,但控制台日志传输不会记录到 syslog,除非应用程序执行将 stdout/stderr 指向它,就像 systemd 所做的那样。

答案 1 :(得分:0)

以下是我为解决 EC2 上的空间问题所做的工作。

Set StandardOutput=null(以前它默认设置为 journald,而不是来自服务文件) 现在它被设置为空。

enter image description here

服务器 - 避免将 systemd 单元(服务)登录到日志中 - Ask Ubuntu https://askubuntu.com/questions/1200680/avoid-systemd-unit-service-to-be-logged-in-journal

enter image description here

linux - 如何禁用 systemd 服务启动/停止通知 https://unix.stackexchange.com/questions/547790/how-to-disable-systemd-service-start-stop-notifications#comment1016825_547817