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

Node.js应用集成SumoLogic遇阻:无报错但日志未上传

解决Winston-SumoLogic传输无日志上传的问题

你的代码存在几个关键问题,导致日志无法正常上传到SumoLogic,以下是修正方案和排查步骤:

代码中的核心问题

  1. 语法错误:var meta = { ... } 块内直接写入执行语句,属于无效的对象语法,会破坏代码逻辑。
  2. 配置时机错误:Winston的SumoLogic传输配置不应放在app.listen的回调函数中,应在服务器启动前完成初始化,避免日志配置滞后。
  3. 缺少错误排查机制:未监听传输的错误事件,无法定位连接或配置类问题。

修正后的代码示例

var winston = require('winston');
var { SumoLogic } = require('winston-sumologic-transport');
// 确保app和port已正确定义(示例用Express框架)
const app = require('express')();
const port = process.env.PORT || 3000;

// 在服务器启动前初始化SumoLogic传输
const sumoOptions = {
  url: process.env.SUMO_LOGIC_URL, // 必须是SumoLogic提供的HTTP Collector有效端点
  sourceName: 'Node.js应用日志', // 可选,用于在SumoLogic中区分日志来源
  level: 'info' // 可选,指定要上传的最低日志级别
};

const sumoTransport = new SumoLogic(sumoOptions);
winston.add(sumoTransport);

// 监听传输错误,快速排查问题
sumoTransport.on('error', (err) => {
  console.error('SumoLogic传输异常:', err);
});

app.listen(port, () => {
  winston.info("Hello message");
  console.log(`Server running on ${port}...`);
});

关键排查步骤

  • 验证SUMO_LOGIC_URL有效性:确认环境变量配置的是SumoLogic控制台生成的HTTP Collector端点URL,格式类似https://endpoint1.collection.us2.sumologic.com/receiver/v1/http/XXXXXX,不要使用Collector名称或其他无关地址。
  • 检查网络连通性:用curl命令测试应用服务器能否访问该SumoLogic端点,排除防火墙或网络拦截问题。
  • 核对日志级别:如果配置了level参数,确保调用的日志方法(如winston.info)级别不低于配置值。
  • 添加Console传输验证Winston功能:临时添加Console传输,确认Winston本身能正常输出日志,排除Winston核心配置问题:
    winston.add(new winston.transports.Console({
      format: winston.format.simple()
    }));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:55:32