You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Winston日志:本地环境禁止向New Relic发送日志

解决Winston在localhost环境下不向New Relic发送日志的问题

方案1:初始化时按需添加New Relic传输器

如果你的Winston日志是通过winston-newrelic传输器发送到New Relic的,最简洁的方式是仅在非localhost环境下加载该传输器:

import { createLogger, format, transports } from 'winston';
import NewRelicTransport from 'winston-newrelic';

export const logger = createLogger({
  format: format.combine(format.timestamp(), format.json()),
  transports: [
    new transports.Console(),
    // 仅当环境不是localhost时,添加New Relic传输器
    ...(process.env.NODE_ENV !== 'localhost' ? [
      new NewRelicTransport({
        apiKey: process.env.NEW_RELIC_API_KEY,
        serviceName: process.env.NEW_RELIC_SERVICE_NAME
      })
    ] : [])
  ],
  exitOnError: false
});

方案2:初始化后动态移除New Relic传输器(适配你提供的代码结构)

如果日志器初始化时已经包含了New Relic传输器,可在localhost环境下过滤掉该传输器:

import { createLogger, format, transports } from 'winston';
import NewRelicTransport from 'winston-newrelic';

export const logger = createLogger({
  format: format.combine(format.timestamp(), format.json()),
  transports: [
    new transports.Console(),
    new NewRelicTransport({ /* 你的New Relic配置项 */ })
  ],
  exitOnError: false
});

if (process.env.NODE_ENV === 'localhost') {
  // 过滤掉所有New Relic类型的传输器
  logger.transports = logger.transports.filter(
    transport => !(transport instanceof NewRelicTransport)
  );
  // 若无法通过实例判断,也可通过传输器名称识别:
  // logger.transports = logger.transports.filter(t => t.name !== 'newrelic');
}

特殊情况:New Relic SDK自动集成场景

如果日志是通过New Relic Node.js SDK自动捕获转发的,而非手动添加Winston传输器,可直接禁用New Relic的日志收集:

if (process.env.NODE_ENV === 'localhost') {
  // 通过环境变量禁用日志收集
  process.env.NEW_RELIC_LOG_ENABLED = 'false';
  // 或直接修改New Relic配置
  require('newrelic').config.logging.enabled = false;
}

注意:确认process.env.NODE_ENV的取值大小写一致(比如避免写成Localhost或localhost不匹配的情况)。

内容的提问来源于stack exchange,提问作者asim mehmood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:17:14