【问题标题】:output logs into /var/log/syslog将日志输出到 /var/log/syslog
【发布时间】:2019-10-14 18:48:21
【问题描述】:

我们的旧系统使用posix 模块输出到/var/log/syslog,没有进行任何调整。但是这个 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。

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

【问题讨论】:

  • 任何错误信息?
  • 我没有收到任何消息,只是没有登录/var/log/syslog

标签: javascript node.js logging


【解决方案1】:

实际上你可以将日志输出到控制台并将stdout和stderr流重定向到文件

【讨论】:

    【解决方案2】:

    考虑到 /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));
    

    【讨论】:

    • 感谢您的回复,但我无法在 /var/log/syslog 中获得任何日志。我应该将options 传递给winston-syslog 什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2019-10-25
    • 2015-02-09
    • 2022-10-19
    • 2015-08-25
    • 1970-01-01
    相关资源
    最近更新 更多