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

Winston Logger - Exclude logging to syslog for console Transport

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

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 配置本身。

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

这真的不是 Node/Winston 问题。您可以更改您的应用程序记录到的位置(切换到具有日志轮换的文件传输,并停止转储到控制台),减少您记录的数量(实际使用调试等......适当地使输出不会太大),或者先看看您的应用 运行 并仔细考虑(您是否希望 systemd 笨拙地为您处理日志记录?)

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

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

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

服务器 - 避免 systemd 单元(服务)被记录在日志中 - 询问 Ubuntu https://askubuntu.com/questions/1200680/avoid-systemd-unit-service-to-be-logged-in-journal

linux - 如何禁用 systemd 服务 start/stop 通知 - Unix & Linux Stack Exchange https://unix.stackexchange.com/questions/547790/how-to-disable-systemd-service-start-stop-notifications#comment1016825_547817