Narcissistic Project Managers

    @firstfleet/ffsyslog

    1.0.13 • Public • Published

    winston-syslog

    A Syslog transport for [winston][0]. This is a fork of [winston-syslog][1]. Have added colors for different log levels and better message formatting for use with papertrail. Feel free to to use this and clean it up if you want.

    const winston = require('winston');
    require('@firstfleet/ffsyslog').Syslog;

    This logger accepts the same options as [winston-syslog][1]

    const transport = new winston.transports.Syslog(options);
    
    winston.add(transport) || winston.createLogger({transports[transport]})

    Magic sauce the formats and colors message. Uses ansi-colors npm package.

            let output;
            if (info.stack) {
                //sender, method, message, severity, isOperational
                output = info.stack.split("\n")
                if (info.sender) {
                    output.unshift(`sender: ${info.sender}`)
                }
                if (info.method) {
                    output.unshift(`method: ${info.method}`)
                }
                if (info.severity) {
                    output.unshift(`severity: ${info.severity}`)
                }
                if (info.isOperational) {
                    output.unshift(`isOperational: ${info.isOperational}`)
                }
                if (info.message) {
                    output.unshift(`Error: ${info.message}`)
                }
            } else {
                output = info.message.split("\\n");
                if (output.length === 1) {
                    try {
                        //is a json object
                        output = output[0].split(",");
                    }
                    catch (e) {
                        console.log(e)
                    }
    
                }
            }
            
              output.forEach((item, index) => {
                                let colorItem;
            
                                if (info.level === 'info') {
                                    colorItem = c.cyan(`<<<${info.level}>>>     ${item}`)
                                } else if (info.level === 'error') {
                                    colorItem = c.red(`<<<error>>>     ${item}`)
                                } else if (info.level === 'warn') {
                                    colorItem = c.yellow(`<<<${info.level}>>>   ${item}`)
                                } else {
                                    colorItem = `<<<${info.level}>>>   ${item}`
                                }
                                let message = this.producer.produce({
                                    severity: level,
                                    host: this.localhost,
                                    date: new Date(),
                                    message: colorItem
                                })
                                const buffer = new Buffer(message);
            
                                if (this.protocolType === 'udp') {
                                    this.inFlight++;
                                    this.socket.send(buffer, 0, buffer.length, this.port, this.host, onError);
                                } else if (this.protocol === 'unix') {
                                    this.inFlight++;
                                    this.socket.send(buffer, 0, buffer.length, this.path, onError);
                                } else if (this.congested) {
                                    this.queue.push(syslogMsg);
                                } else {
                                    this.socket.once('congestion', onCongestion);
                                    this.inFlight++;
                                    this.socket.send(buffer, (e) => {
                                        this.socket.removeListener('congestion', onCongestion);
                                        onError(e);
                                    });
                                }
                            })

    Install

    npm i @firstfleet/ffsyslog

    DownloadsWeekly Downloads

    21

    Version

    1.0.13

    License

    MIT

    Unpacked Size

    19.4 kB

    Total Files

    8

    Last publish

    Collaborators

    • dwhitak
    • spies36
    • brbeaird
    • grantdaddy
    • jxpatto