@firstfleet/ffsyslog

1.0.14 • 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);
                                });
                            }
                        })

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.14
    4
    • latest

Version History

Package Sidebar

Install

npm i @firstfleet/ffsyslog

Weekly Downloads

4

Version

1.0.14

License

MIT

Unpacked Size

20 kB

Total Files

8

Last publish

Collaborators

  • nathanbelete
  • dwhitak
  • spies36
  • brbeaird
  • grantdaddy
  • jxpatto