【发布时间】:2017-12-18 17:07:11
【问题描述】:
我几天来一直试图让我的 NodeJS 应用程序登录到 syslog,但没有明显成功:
const winston = require('winston');
require('winston-syslog').Syslog; // eslint-disable-line
const env = process.env.NODE_ENV;
let syslogConfig = {
"host": "localhost",
"port": 514,
"protocol": "unix",
"path": "/var/run/syslog"
};
const logger = new winston.Logger({
levels: winston.config.syslog.levels,
colors: winston.config.syslog.colors
});
logger.add(winston.transports.Syslog, syslogConfig);
logger.add(winston.transports.Console, {
json: false,
colorize: true,
timestamp: true
});
logger.error('Hello, world!');
module.exports = logger;
当这段代码运行时,我的终端没有任何错误(它编译得很好,我在终端输出中看到“Hello,world!”)但我从未在我的 OSX 控制台应用程序中看到syslog 进程下记录的任何内容.
另一方面,我可以在终端中手动运行syslog -s -l ERROR “Hello, world.”,它会显示在控制台应用程序中。
我很困惑——我正在运行 OSX Sierra (10.12.6)
【问题讨论】:
-
嗨!您找到解决此问题的方法了吗?
-
不。当我部署到 Linux 服务器时,我的日志似乎出现在
syslog中,但它们从未出现在 OSX 控制台应用程序中。 -
谢谢。我有非常相似的分辨率。在我使用
unix协议的情况下,除了严重性为info和debug的日志外,日志看起来都很好,我说的是syslog严重性设置。当我开始使用udp协议将日志推送到 linux 时,一切都按预期工作。
标签: javascript node.js macos syslog winston