【问题标题】:How to use Winston3 to log events in the Windows Event Log?如何使用 Winston3 在 Windows 事件日志中记录事件?
【发布时间】:2019-08-27 07:20:19
【问题描述】:

我想将来自 nodejs 服务的消息记录到 Windows 事件日志中。

我找到了winston-winlogwinston-winlog2 模块,但它们都使用旧的winston 版本。

如何为 Winston3 制作自定义传输以登录 Windows 事件日志?

【问题讨论】:

    标签: node.js event-log winston


    【解决方案1】:

    感谢node-windows 模块:

        const Transport      = require('winston-transport');
        const WinEventLogger = require('node-windows').EventLogger;
    
        class WinstonWinlogTransport extends Transport {
            constructor(opts) {
                super(opts);
                this.logger = new WinEventLogger(opts);
            }
    
            log(info, callback) {
                setImmediate(() => {
                    this.emit('logged', info);
                });
                let {message, level} = info ;
                if ( level==='error' ) this.logger.error(message) ;
                else if ( level==='warn' ) this.logger.warn(message) ;
                else this.logger.info(message) ;
                callback();
            }
        };
    

    然后您可以创建传输并将它们添加到您的 winston 记录器:

        let myTransport = new WinstonWinlogTransport({ source: 'Label1' }) ;  // Go to "Applications" logs
        let myOtherTransport = new WinstonWinlogTransport({ source: 'Label2', eventLog: 'SYSTEM' }) ;  // Go to "System" logs
    

    请注意,您的 nodejs 服务必须以管理员权限安装。 (为了将nodejs代码安装为windows服务,我使用了WinSW

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      相关资源
      最近更新 更多