首页 > 解决方案 > 将日志输出到 /var/log/syslog

问题描述

我们的遗留系统在没有任何调整的情况下输出到/var/log/syslogwith模块。posix但是这个posix包在 Node.js v10 中不再可用,我们不得不采用其他日志模块。

我们现在尝试使用winston模块来代替它,我们的设置如下所示。

this.logger = winston.createLogger({
  levels: winston.config.syslog.levels,
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({
      filename: '/var/log/syslog'
    })
  ]
});

但是我们无法登录/var/log/syslog,可能是由于权限问题。有没有人对此有最好的解决方案?我们想要做的是启用/var/log/syslog轻松设置输出日志。

我认为最好的方法是更改​​目标文件,如果您没有更好的方法,只需告诉我“更改目标文件”即可。

标签: javascriptnode.jslogging

解决方案


考虑到 /var/log/syslog 是由系统实用程序管理的,您很可能确实存在权限问题。

无论如何,最快的解决方案是使用 npm 包winston-syslog,如果您查看文档,它很容易配置

const winston = require('winston');

//
// Requiring `winston-syslog` will expose
// `winston.transports.Syslog`
//
require('winston-syslog').Syslog;

winston.add(new winston.transports.Syslog(options));

推荐阅读